Initial commit

This commit is contained in:
root
2026-01-19 17:44:46 +01:00
commit 823af8b11d
8721 changed files with 1130846 additions and 0 deletions

120
install/cli.php Normal file
View File

@@ -0,0 +1,120 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
if (substr(php_sapi_name(), 0, 3) != 'cli') {
die('The file can be run only via CLI.');
}
$options = getopt("a:d:");
if (empty($options['a'])) {
fwrite(\STDOUT, "Error: the option [-a] is required.\n");
exit;
}
$allPostData = [];
if (!empty($options['d'])) {
parse_str($options['d'], $allPostData);
if (empty($allPostData) || !is_array($allPostData)) {
fwrite(\STDOUT, "Error: Incorrect input data.\n");
exit;
}
}
$action = $options['a'];
$allPostData['action'] = $action;
chdir(dirname(__FILE__));
set_include_path(dirname(__FILE__));
require_once('../bootstrap.php');
$_SERVER['SERVER_SOFTWARE'] = 'Cli';
require_once('core/PostData.php');
$postData = new PostData();
$postData->set($allPostData);
require_once('core/InstallerConfig.php');
$installerConfig = new InstallerConfig();
if ($installerConfig->get('isInstalled')) {
fwrite(\STDOUT, "Error: EspoCRM is already installed.\n");
exit;
}
if (session_status() != \PHP_SESSION_ACTIVE) {
if (!$installerConfig->get('cliSessionId')) {
session_start();
$installerConfig->set('cliSessionId', session_id());
$installerConfig->save();
} else {
session_id($installerConfig->get('cliSessionId'));
}
}
ob_start();
try {
require('entry.php');
} catch (\Throwable $e) {
fwrite(\STDOUT, "Error: ". $e->getMessage() .".\n");
exit;
}
$result = ob_get_contents();
ob_end_clean();
if (preg_match('/"success":false/i', $result)) {
$resultData = json_decode($result, true);
if (empty($resultData)) {
fwrite(\STDOUT, "Error: Unexpected error occurred.\n");
exit;
}
fwrite(
\STDOUT,
"Error: ". (!empty($resultData['errors']) ?
print_r($resultData['errors'], true) :
$resultData['errorMsg']) ."\n"
);
exit;
}

5
install/config.php Normal file
View File

@@ -0,0 +1,5 @@
<?php
return array (
'cliSessionId' => 'f434452dd887f00474e555f25c02af90',
'isInstalled' => true,
);

757
install/core/Installer.php Normal file
View File

@@ -0,0 +1,757 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
use Doctrine\DBAL\Exception as DBALException;
use Espo\Core\Application;
use Espo\Core\Container;
use Espo\Core\DataManager;
use Espo\Core\Exceptions\Error;
use Espo\Core\InjectableFactory;
use Espo\Core\ORM\DatabaseParamsFactory;
use Espo\Core\Utils\Database\ConfigDataProvider;
use Espo\Core\Utils\Database\Dbal\ConnectionFactoryFactory;
use Espo\Core\Utils\Id\RecordIdGenerator;
use Espo\Core\Utils\ScheduledJob as ScheduledJobUtil;
use Espo\Core\Utils\Util;
use Espo\Core\Utils\Config\ConfigFileManager;
use Espo\Core\Utils\Config;
use Espo\Core\Utils\Config\ConfigWriter;
use Espo\Core\Utils\Config\ConfigWriterFileManager;
use Espo\Core\Utils\Database\Helper as DatabaseHelper;
use Espo\Core\Utils\PasswordHash;
use Espo\Core\Utils\SystemRequirements;
use Espo\Core\Utils\Metadata;
use Espo\Core\Utils\File\Manager as FileManager;
use Espo\Core\Utils\Language;
use Espo\Core\Binding\BindingContainerBuilder;
use Espo\Core\ORM\EntityManager;
use Espo\Entities\Job;
use Espo\Entities\ScheduledJob;
use Espo\Entities\User;
use Espo\ORM\Query\SelectBuilder;
use Espo\Tools\Installer\DatabaseConfigDataProvider;
class Installer
{
private SystemHelper $systemHelper;
private DatabaseHelper $databaseHelper;
private InstallerConfig $installerConfig;
private DatabaseParamsFactory $databaseParamsFactory;
private ?Application $app = null;
private ?Language $language = null;
private ?PasswordHash $passwordHash;
private bool $isAuth = false;
private ?array $defaultSettings = null;
private $permittedSettingList = [
'dateFormat',
'timeFormat',
'timeZone',
'weekStart',
'defaultCurrency',
'language',
'thousandSeparator',
'decimalMark',
'outboundEmailFromName',
'outboundEmailFromAddress',
'outboundEmailIsShared',
'theme',
];
public function __construct(
private Application\ApplicationParams $applicationParams = new Application\ApplicationParams(),
) {
$this->initialize();
require_once('install/core/InstallerConfig.php');
$this->installerConfig = new InstallerConfig();
require_once('install/core/SystemHelper.php');
$this->systemHelper = new SystemHelper();
$this->databaseHelper = $this->getInjectableFactory()->create(DatabaseHelper::class);
$this->databaseParamsFactory = $this->getInjectableFactory()->create(DatabaseParamsFactory::class);
}
private function initialize(): void
{
$fileManager = new ConfigFileManager();
$config = new Config($fileManager);
$configPath = $config->getConfigPath();
if (!file_exists($configPath)) {
$fileManager->putPhpContents($configPath, []);
$config->update();
}
$defaultData = include('application/Espo/Resources/defaults/config.php');
$configData = [];
foreach (array_keys($defaultData) as $key) {
if (!$config->has($key)) {
continue;
}
$configData[$key] = $config->get($key);
}
$configWriterFileManager = new ConfigWriterFileManager(
null,
$config->get('defaultPermissions') ?? null
);
$injectableFactory = (new Application($this->applicationParams))
->getContainer()
->getByClass(InjectableFactory::class);
$configWriter = $injectableFactory->createWithBinding(
ConfigWriter::class,
BindingContainerBuilder::create()
->bindInstance(Config::class, $config)
->bindInstance(ConfigWriterFileManager::class, $configWriterFileManager)
->build()
);
// Save default data if it does not exist.
if (!Util::arrayKeysExists(array_keys($defaultData), $configData)) {
$defaultData = array_replace_recursive($defaultData, $configData);
$configWriter->setMultiple($defaultData);
$configWriter->save();
}
$this->app = new Application($this->applicationParams);
}
private function getContainer(): Container
{
return $this->app->getContainer();
}
private function getEntityManager(): EntityManager
{
return $this->getContainer()->getByClass(EntityManager::class);
}
public function getMetadata(): Metadata
{
return $this->app->getContainer()->getByClass(Metadata::class);
}
public function getInjectableFactory(): InjectableFactory
{
return $this->app->getContainer()->getByClass(InjectableFactory::class);
}
public function getConfig(): Config
{
return $this->app->getContainer()->getByClass(Config::class);
}
public function createConfigWriter(): ConfigWriter
{
return $this->getInjectableFactory()->create(ConfigWriter::class);
}
private function getSystemHelper(): SystemHelper
{
return $this->systemHelper;
}
private function getInstallerConfig(): InstallerConfig
{
return $this->installerConfig;
}
private function getFileManager(): FileManager
{
return $this->app->getContainer()->getByClass(FileManager::class);
}
private function getPasswordHash(): PasswordHash
{
if (!isset($this->passwordHash)) {
$this->passwordHash = $this->getInjectableFactory()->create(PasswordHash::class);
}
return $this->passwordHash;
}
public function getVersion(): ?string
{
return $this->getConfig()->get('version');
}
private function auth(): void
{
if (!$this->isAuth) {
$this->app->setupSystemUser();
$this->isAuth = true;
}
}
public function isInstalled(): bool
{
$installerConfig = $this->getInstallerConfig();
if ($installerConfig->get('isInstalled')) {
return true;
}
return $this->app->isInstalled();
}
public function createLanguage(string $language): Language
{
return $this->getInjectableFactory()
->createWith(Language::class, ['language' => $language]);
}
public function getLanguage(): Language
{
if (!isset($this->language)) {
try {
$language = $this->app->getContainer()->get('defaultLanguage');
if (!$language instanceof Language) {
throw new RuntimeException("Can't get default language.");
}
$this->language = $language;
} catch (Throwable $e) {
echo "Error: " . $e->getMessage();
$GLOBALS['log']->error($e->getMessage());
die;
}
}
return $this->language;
}
public function getThemeList(): array
{
return [
'Espo',
'Dark',
'Light',
'Glass',
'Violet',
'Sakura',
'Hazyblue',
];
}
public function getLanguageList($isTranslated = true): array
{
$languageList = $this->getMetadata()->get(['app', 'language', 'list']);
if ($isTranslated) {
return $this->getLanguage()->translate('language', 'options', 'Global', $languageList);
}
return $languageList;
}
private function getCurrencyList(): array
{
return $this->getMetadata()->get('app.currency.list');
}
public function getInstallerConfigData()
{
return $this->getInstallerConfig()->getAllData();
}
public function getSystemRequirementList($type, $requiredOnly = false, array $additionalData = null)
{
$platform = $additionalData['databaseParams']['platform'] ?? 'Mysql';
$dbConfigDataProvider = new DatabaseConfigDataProvider($platform);
/** @var SystemRequirements $systemRequirementManager */
$systemRequirementManager = $this->app
->getContainer()
->getByClass(InjectableFactory::class)
->createWithBinding(
SystemRequirements::class,
BindingContainerBuilder::create()
->bindInstance(ConfigDataProvider::class, $dbConfigDataProvider)
->build()
);
return $systemRequirementManager->getRequiredListByType($type, $requiredOnly, $additionalData);
}
/**
* @throws DBALException
* @throws Exception
*/
public function checkDatabaseConnection(array $rawParams, bool $createDatabase = false): void
{
$params = $this->databaseParamsFactory->createWithMergedAssoc($rawParams);
$dbname = $params->getName();
try {
$this->databaseHelper->createPDO($params);
} catch (Exception $e) {
if (!$createDatabase) {
throw $e;
}
if ((int) $e->getCode() !== 1049) {
throw $e;
}
/** @noinspection RegExpRedundantEscape */
if ($dbname !== preg_replace('/[^A-Za-z0-9_\-@$#\(\)]+/', '', $dbname)) {
throw new Exception("Bad database name.");
}
$params = $params->withName(null);
$pdo = $this->databaseHelper->createPDO($params);
$connectionFactoryFactory = $this->getInjectableFactory()->create(ConnectionFactoryFactory::class);
$connection = $connectionFactoryFactory
->create($params->getPlatform(), $pdo)
->create($params);
$schemaManager = $connection->createSchemaManager();
$platform = $connection->getDatabasePlatform();
$schemaManager->createDatabase($platform->quoteIdentifier($dbname));
$this->checkDatabaseConnection($rawParams);
}
}
/**
* Save data.
*
* @param array<string, mixed> $saveData
* [
* 'driver' => 'pdo_mysql',
* 'host' => 'localhost',
* 'dbname' => 'espocrm_test',
* 'user' => 'root',
* 'password' => '',
* ]
* @return bool
*/
public function saveData(array $saveData)
{
$initData = include('install/core/afterInstall/config.php');
$databaseDefaults = $this->app
->getContainer()
->getByClass(Config::class)
->get('database');
$siteUrl = !empty($saveData['siteUrl']) ? $saveData['siteUrl'] : $this->getSystemHelper()->getBaseUrl();
$data = [
'database' => array_merge($databaseDefaults, $saveData['database']),
'language' => $saveData['language'] ?? 'en_US',
'siteUrl' => $siteUrl,
'cryptKey' => Util::generateSecretKey(),
'hashSecretKey' => Util::generateSecretKey(),
'theme' => $saveData['theme'] ?? 'Espo',
];
if (empty($saveData['defaultPermissions']['user'])) {
$saveData['defaultPermissions']['user'] = $this->getFileManager()
->getPermissionUtils()
->getDefaultOwner(true);
}
if (empty($saveData['defaultPermissions']['group'])) {
$saveData['defaultPermissions']['group'] = $this->getFileManager()
->getPermissionUtils()
->getDefaultGroup(true);
}
if (!empty($saveData['defaultPermissions']['user'])) {
$data['defaultPermissions']['user'] = $saveData['defaultPermissions']['user'];
}
if (!empty($saveData['defaultPermissions']['group'])) {
$data['defaultPermissions']['group'] = $saveData['defaultPermissions']['group'];
}
return $this->saveConfig(array_merge($data, $initData));
}
public function saveConfig($data)
{
$configWriter = $this->createConfigWriter();
$configWriter->setMultiple($data);
$configWriter->save();
return true;
}
/**
* @throws Error
*/
public function rebuild(): void
{
try {
$this->app->getContainer()->getByClass(DataManager::class)->rebuild();
} catch (Exception) {
$this->auth();
$this->app->getContainer()->getByClass(DataManager::class)->rebuild();
}
}
public function savePreferences(array $rawPreferences)
{
$preferences = $this->normalizeSettingParams($rawPreferences);
$currencyList = $this->getConfig()->get('currencyList', []);
if (
isset($preferences['defaultCurrency']) &&
!in_array($preferences['defaultCurrency'], $currencyList)
) {
$preferences['currencyList'] = [$preferences['defaultCurrency']];
$preferences['baseCurrency'] = $preferences['defaultCurrency'];
}
return $this->saveConfig($preferences);
}
private function createRecords(): void
{
$records = include('install/core/afterInstall/records.php');
foreach ($records as $entityName => $recordList) {
foreach ($recordList as $data) {
$this->createRecord($entityName, $data);
}
}
}
private function createRecord(string $entityType, array $data): void
{
$id = $data['id'] ?? null;
$entity = null;
$em = $this->getEntityManager();
if ($id) {
$entity = $em->getEntityById($entityType, $id);
if (!$entity) {
$selectQuery = $em->getQueryBuilder()
->select('id')
->from($entityType)
->withDeleted()
->where(['id' => $id])
->build();
$entity = $em->getRDBRepository($entityType)
->clone($selectQuery)
->findOne();
if ($entity) {
$updateQuery = $em->getQueryBuilder()
->update()
->in($entityType)
->set(['deleted' => false])
->where(['id' => $id])
->build();
$em->getQueryExecutor()->execute($updateQuery);
$em->refreshEntity($entity);
}
}
}
if (!$entity) {
if (isset($data['name'])) {
$entity = $this->getEntityManager()
->getRDBRepository($entityType)
->where(['name' => $data['name']])
->findOne();
}
if (!$entity) {
$entity = $this->getEntityManager()->getNewEntity($entityType);
}
}
$entity->set($data);
$this->getEntityManager()->saveEntity($entity);
}
public function createUser(string $userName, string $password): bool
{
$this->auth();
$password = $this->getPasswordHash()->hash($password);
$user = $this->getEntityManager()
->getRDBRepositoryByClass(User::class)
->clone(
SelectBuilder::create()
->from(User::ENTITY_TYPE)
->withDeleted()
->build()
)
->where(['userName' => $userName])
->findOne();
if ($user) {
$user->set([
'password' => $password,
'deleted' => false,
]);
$this->getEntityManager()->saveEntity($user);
}
if (!$user) {
$id = $this->getInjectableFactory()
->createResolved(RecordIdGenerator::class)
->generate();
$this->createRecord(User::ENTITY_TYPE, [
'id' => $id,
'userName' => $userName,
'password' => $password,
'lastName' => 'Admin',
'type' => User::TYPE_ADMIN,
]);
}
return true;
}
public function checkPermission(): bool
{
return $this->getFileManager()->getPermissionUtils()->setMapPermission();
}
public function getLastPermissionError()
{
return $this->getFileManager()->getPermissionUtils()->getLastErrorRules();
}
public function setSuccess(): void
{
$this->auth();
$this->createRecords();
$this->executeFinalScript();
$installerConfig = $this->getInstallerConfig();
$installerConfig->set('isInstalled', true);
$installerConfig->save();
$configWriter = $this->createConfigWriter();
$configWriter->set('isInstalled', true);
$configWriter->save();
}
/**
* @return array<string, mixed>
*/
public function getDefaultSettings(): array
{
if (!$this->defaultSettings) {
$settingDefs = $this->getMetadata()->get('entityDefs.Settings.fields');
$defaults = [];
foreach ($this->permittedSettingList as $fieldName) {
if (!isset($settingDefs[$fieldName])) {
continue;
}
switch ($fieldName) {
case 'defaultCurrency':
$settingDefs['defaultCurrency']['options'] = $this->getCurrencyList();
break;
case 'language':
$settingDefs['language']['options'] = $this->getLanguageList(false);
break;
case 'theme':
$settingDefs['theme']['options'] = $this->getThemeList();
break;
}
$defaults[$fieldName] = $this->translateSetting($fieldName, $settingDefs[$fieldName]);
}
$this->defaultSettings = $defaults;
}
return $this->defaultSettings;
}
private function normalizeSettingParams(array $params)
{
$defaultSettings = $this->getDefaultSettings();
$normalizedParams = [];
foreach ($params as $name => $value) {
if (!isset($defaultSettings[$name])) {
continue;
}
$paramDefs = $defaultSettings[$name];
$paramType = $paramDefs['type'] ?? 'varchar';
switch ($paramType) {
case 'enum':
if (
isset($paramDefs['options']) && array_key_exists($value, $paramDefs['options']) ||
!isset($paramDefs['options'])
) {
$normalizedParams[$name] = $value;
} else if (array_key_exists('default', $paramDefs)) {
$normalizedParams[$name] = $paramDefs['default'];
$GLOBALS['log']->warning(
'Incorrect value ['. $value .'] for Settings parameter ['. $name .']. ' .
'Use default value ['. $paramDefs['default'] .'].'
);
}
break;
case 'bool':
$normalizedParams[$name] = (bool) $value;
break;
case 'int':
case 'enumInt':
$normalizedParams[$name] = (int) $value;
break;
case 'varchar':
default:
$normalizedParams[$name] = $value;
break;
}
}
return $normalizedParams;
}
private function translateSetting($name, array $settingDefs)
{
if (!isset($settingDefs['options'])) {
return $settingDefs;
}
$translation = !empty($settingDefs['translation'])
? explode('.', $settingDefs['translation']) : null;
$label = $translation[2] ?? $name;
$category = $translation[1] ?? 'options';
$scope = $translation[0] ?? 'Settings';
$translatedOptions = $this->getLanguage()
->translate($label, $category, $scope, $settingDefs['options']);
if ($translatedOptions == $name) {
$translatedOptions = $this->getLanguage()
->translate($name, 'options', 'Global', $settingDefs['options']);
}
if ($translatedOptions == $name) {
$translatedOptions = [];
foreach ($settingDefs['options'] as $value) {
$translatedOptions[$value] = $value;
}
}
$settingDefs['options'] = $translatedOptions;
return $settingDefs;
}
public function getCronMessage(): array
{
return $this->getInjectableFactory()
->create(ScheduledJobUtil::class)
->getSetupMessage();
}
private function executeFinalScript(): void
{
$this->prepareDummyJob();
}
private function prepareDummyJob(): void
{
$scheduledJob = $this->getEntityManager()
->getRDBRepository(ScheduledJob::ENTITY_TYPE)
->where(['job' => 'Dummy'])
->findOne();
if (!$scheduledJob) {
return;
}
$this->getEntityManager()->createEntity(Job::ENTITY_TYPE, [
'name' => 'Dummy',
'scheduledJobId' => $scheduledJob->getId(),
]);
}
public function getLogoSrc(string $theme): string
{
return $this->getMetadata()->get(['themes', $theme, 'logo']) ?? 'client/img/logo.svg';
}
}

View File

@@ -0,0 +1,122 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
class InstallerConfig
{
private $data;
private $fileManager;
protected $configPath = 'install/config.php'; //full path: install/config.php
public function __construct()
{
$this->fileManager = new \Espo\Core\Utils\File\Manager();
}
protected function getFileManager()
{
return $this->fileManager;
}
protected function getContainer()
{
return $this->container;
}
protected function loadData()
{
if (file_exists($this->configPath)) {
$data = include($this->configPath);
if (is_array($data)) {
return $data;
}
}
return [];
}
public function getAllData()
{
if (!$this->data) {
$this->data = $this->loadData();
}
return $this->data;
}
public function get($name, $default = [])
{
if (!$this->data) {
$this->data = $this->loadData();
}
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
return $default;
}
public function set($name, $value = null)
{
if (!is_array($name)) {
$name = array($name => $value);
}
foreach ($name as $key => $value) {
$this->data[$key] = $value;
}
}
public function save()
{
$data = $this->loadData();
if (is_array($this->data)) {
foreach ($this->data as $key => $value) {
$data[$key] = $value;
}
}
try {
$result = $this->getFileManager()->putPhpContents($this->configPath, $data);
} catch (\Exception $e) {
$GLOBALS['log']->warning($e->getMessage());
$result = false;
}
if ($result) {
$this->data = null;
}
return $result;
}
}

158
install/core/Language.php Normal file
View File

@@ -0,0 +1,158 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
class Language{
private $defaultLanguage = 'en_US';
private $systemHelper;
private $data = array();
protected $defaultLabels = [
'nginx' => 'linux',
'apache' => 'linux',
'microsoft-iis' => 'windows',
];
public function __construct()
{
require_once 'SystemHelper.php';
$this->systemHelper = new SystemHelper();
}
protected function getSystemHelper()
{
return $this->systemHelper;
}
public function get($language)
{
if (isset($this->data[$language])) {
return $this->data[$language];
}
if (empty($language)) {
$language = $this->defaultLanguage;
}
$langFileName = 'install/core/i18n/'.$language.'/install.json';
if (!file_exists($langFileName)) {
$langFileName = 'install/core/i18n/'.$this->defaultLanguage.'/install.json';
}
$i18n = $this->getLangData($langFileName);
if ($language != $this->defaultLanguage) {
$i18n = $this->mergeWithDefaults($i18n);
}
$this->afterRetrieve($i18n);
$this->data[$language] = $i18n;
return $this->data[$language];
}
/**
* Merge current language with default one
*
* @param array $data
* @return array
*/
protected function mergeWithDefaults($data)
{
$defaultLangFile = 'install/core/i18n/'.$this->defaultLanguage.'/install.json';
$defaultData = $this->getLangData($defaultLangFile);
foreach ($data as $categoryName => &$labels) {
foreach ($defaultData[$categoryName] as $defaultLabelName => $defaultLabel) {
if (!isset($labels[$defaultLabelName])) {
$labels[$defaultLabelName] = $defaultLabel;
}
}
}
$data = array_merge($defaultData, $data);
return $data;
}
protected function getLangData($filePath)
{
$data = file_get_contents($filePath);
$data = json_decode($data, true);
return $data;
}
/**
* After retrieve actions
*
* @param array $i18n
* @return array $i18n
*/
protected function afterRetrieve(array &$i18n)
{
/** Get rewrite rules */
$serverType = $this->getSystemHelper()->getServerType();
$serverOs = $this->getSystemHelper()->getOs();
$rewriteRules = $this->getSystemHelper()->getRewriteRules();
$label = $i18n['options']['modRewriteInstruction'][$serverType][$serverOs] ?? null;
if (!isset($label) && isset($this->defaultLabels[$serverType])) {
$defaultLabel = $this->defaultLabels[$serverType];
if (!isset($i18n['options']['modRewriteInstruction'][$serverType][$defaultLabel])) {
$defaultLangFile = 'install/core/i18n/' . $this->defaultLanguage . '/install.json';
$defaultData = $this->getLangData($defaultLangFile);
$i18n['options']['modRewriteInstruction'][$serverType][$defaultLabel] = $defaultData['options']['modRewriteInstruction'][$serverType][$defaultLabel];
}
$label = $i18n['options']['modRewriteInstruction'][$serverType][$defaultLabel];
}
if (!$label) {
return;
}
preg_match_all('/\{(.*?)\}/', $label, $match);
if (isset($match[1])) {
foreach ($match[1] as $varName) {
if (isset($rewriteRules[$varName])) {
$label = str_replace('{'.$varName.'}', $rewriteRules[$varName], $label);
}
}
}
$i18n['options']['modRewriteInstruction'][$serverType][$serverOs] = $label;
}
}

72
install/core/PostData.php Normal file
View File

@@ -0,0 +1,72 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
class PostData
{
protected $data = [];
public function __construct()
{
$this->init();
}
protected function init()
{
if (isset($_POST) && is_array($_POST)) {
$this->data = $_POST;
}
}
public function set($name, $value = null)
{
if (!is_array($name)) {
$name = [
$name => $value
];
}
foreach ($name as $key => $value) {
$this->data[$key] = $value;
}
}
public function get($name, $default = null)
{
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
return $default;
}
public function getAll()
{
return $this->data;
}
}

View File

@@ -0,0 +1,268 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
use Espo\Core\Utils\File\Manager;
use Espo\Core\Utils\File\Permission;
use Espo\Core\Utils\System;
class SystemHelper extends System
{
protected $config;
protected $mainConfig;
protected $apiPath;
protected $modRewriteUrl = '/';
protected $writableDir = 'data';
protected $combineOperator = '&&';
protected $writableMap;
public function __construct()
{
$this->config = include('config.php');
if (file_exists('data/config.php')) {
$this->mainConfig = include('data/config.php');
}
$this->apiPath = $this->config['apiPath'];
$permission = new Permission(new Manager());
$this->writableMap = $permission->getWritableMap();
}
public function initWritable()
{
if (is_writable($this->writableDir)) {
return true;
}
return false;
}
public function getWritableDir()
{
return $this->writableDir;
}
public function getBaseUrl()
{
$pageUrl = 'http://';
if (isset($_SERVER['REQUEST_SCHEME']) && $_SERVER['REQUEST_SCHEME'] == 'https') {
$pageUrl = 'https://';
}
if (isset($_SERVER['HTTPS']) && $_SERVER["HTTPS"] == 'on') {
$pageUrl = 'https://';
}
if ($_SERVER["SERVER_PORT"] == '443') {
$pageUrl = 'https://';
}
if (in_array($_SERVER["SERVER_PORT"], ['80', '443'])) {
$pageUrl .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
} else {
$pageUrl .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
}
return str_ireplace('/install/index.php', '', $pageUrl);
}
public function getApiPath()
{
return $this->apiPath;
}
public function getModRewriteUrl()
{
return $this->apiPath . $this->modRewriteUrl;
}
public function getChownCommand($path, $isSudo = false, $isCd = true)
{
$path = empty($path) ? '.' : $path;
if (is_array($path)) {
$path = implode(' ', $path);
}
$owner = function_exists('posix_getuid') ? posix_getuid() : null;
$group = function_exists('posix_getegid') ? posix_getegid() : null;
$sudoStr = $isSudo ? 'sudo ' : '';
if (empty($owner) || empty($group)) {
return null;
}
$cd = '';
if ($isCd) {
$cd = $this->getCd(true);
}
return $cd.$sudoStr.'chown -R '.$owner.':'.$group.' '.$path;
}
public function getChmodCommand($path, $permissions = ['755'], $isRecursive = true, $isSudo = false, $isFile = null)
{
$path = empty($path) ? '.' : $path;
if (is_array($path)) {
$path = implode(' ', $path);
}
$sudoStr = $isSudo ? 'sudo ' : '';
if (is_string($permissions)) {
$permissions = (array) $permissions;
}
if (!isset($isFile) && count($permissions) == 1) {
if ($isRecursive) {
return $sudoStr . 'find '. $path .' -type d -exec ' . $sudoStr . 'chmod '. $permissions[0] .' {} +';
}
return $sudoStr . 'chmod '. $permissions[0] .' '. $path;
}
$bufPerm = (count($permissions) == 1) ? array_fill(0, 2, $permissions[0]) : $permissions;
$commands = array();
if ($isRecursive) {
$commands[] = $sudoStr. 'find '.$path.' -type f -exec ' .$sudoStr.'chmod '.$bufPerm[0].' {} +';
$commands[] = $sudoStr . 'find '.$path.' -type d -exec ' .$sudoStr. 'chmod '.$bufPerm[1].' {} +';
} else {
if (file_exists($path) && is_file($path)) {
$commands[] = $sudoStr. 'chmod '. $bufPerm[0] .' '. $path;
} else {
$commands[] = $sudoStr. 'chmod '. $bufPerm[1] .' '. $path;
}
}
if (count($permissions) >= 2) {
return implode(' ' . $this->combineOperator . ' ', $commands);
}
return $isFile ? $commands[0] : $commands[1];
}
private function getFullPath($path)
{
if (is_array($path)) {
$pathList = [];
foreach ($path as $pathItem) {
$pathList[] = $this->getFullPath($pathItem);
}
return $pathList;
}
if (!empty($path)) {
$path = DIRECTORY_SEPARATOR . $path;
}
return $this->getRootDir() . $path;
}
/**
* Get permission commands
*
* @param string|array $path
* @param string|array $permissions
* @param boolean $isSudo
* @param bool $isFile
* @return string
*/
public function getPermissionCommands(
$path,
$permissions = ['644', '755'],
$isSudo = false,
$isFile = null,
$changeOwner = true,
$isCd = true
) {
if (is_string($path)) {
$path = array_fill(0, 2, $path);
}
[$chmodPath, $chownPath] = $path;
$commands = array();
if ($isCd) {
$commands[] = $this->getCd();
}
$chmodPath = (array) $chmodPath;
$pathList = [];
$recursivePathList = [];
foreach ($chmodPath as $pathItem) {
if (isset($this->writableMap[$pathItem]) && !$this->writableMap[$pathItem]['recursive']) {
$pathList[] = $pathItem;
continue;
}
$recursivePathList[] = $pathItem;
}
if (!empty($pathList)) {
$commands[] = $this->getChmodCommand($pathList, $permissions, false, $isSudo, $isFile);
}
if (!empty($recursivePathList)) {
$commands[] = $this->getChmodCommand($recursivePathList, $permissions, true, $isSudo, $isFile);
}
if ($changeOwner) {
$chown = $this->getChownCommand($chownPath, $isSudo, false);
if (isset($chown)) {
$commands[] = $chown;
}
}
return implode(' ' . $this->combineOperator . ' ', $commands).';';
}
protected function getCd($isCombineOperator = false)
{
$cd = 'cd '.$this->getRootDir();
if ($isCombineOperator) {
$cd .= ' '.$this->combineOperator.' ';
}
return $cd;
}
public function getRewriteRules()
{
return $this->config['rewriteRules'];
}
}

55
install/core/Utils.php Normal file
View File

@@ -0,0 +1,55 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
class Utils
{
static public $actionPath = 'install/core/actions';
static public function checkActionExists(string $actionName): bool
{
return in_array($actionName, [
'saveSettings',
'buildDatabase',
'checkPermission',
'createUser',
'errors',
'finish',
'main',
'saveEmailSettings',
'savePreferences',
'settingsTest',
'setupConfirmation',
'step1',
'step2',
'step3',
'step4',
'step5',
]);
}
}

View File

@@ -0,0 +1,36 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
ob_start();
$result = array('success' => true, 'errorMsg' => '');
$installer->rebuild();
ob_clean();
echo json_encode($result);

View File

@@ -0,0 +1,76 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
ob_start();
$result = ['success' => true, 'errorMsg' => ''];
if (!$installer->checkPermission()) {
$result['success'] = false;
$error = $installer->getLastPermissionError();
$urls = array_keys($error);
$group = [];
foreach ($error as $folder => $permission) {
$group[implode('-', $permission)][] = $folder;
}
ksort($group);
$instruction = '';
$instructionSU = '';
$changeOwner = true;
foreach($group as $permission => $folders) {
if ($permission == '0644-0755') {
$folders = '';
}
$instruction .= $systemHelper
->getPermissionCommands([$folders, ''], explode('-', $permission), false, null, $changeOwner) . "<br>";
$instructionSU .= $systemHelper
->getPermissionCommands([$folders, ''], explode('-', $permission), true, null, $changeOwner) . "<br>";
if ($changeOwner) {
$changeOwner = false;
}
}
$result['errorMsg'] = $langs['messages']['Permission denied to'] . ':<br><pre>'.implode('<br>', $urls).'</pre>';
$result['errorFixInstruction'] =
str_replace( '"{C}"' , $instruction, $langs['messages']['permissionInstruction']) .
"<br>" . str_replace( '{CSU}' , $instructionSU, $langs['messages']['operationNotPermitted']);
}
ob_clean();
echo json_encode($result);

View File

@@ -0,0 +1,49 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
ob_start();
$result = ['success' => false, 'errorMsg' => ''];
// create user
if (!empty($_SESSION['install']['user-name']) && !empty($_SESSION['install']['user-pass'])) {
$userId = $installer->createUser($_SESSION['install']['user-name'], $_SESSION['install']['user-pass']);
if (!empty($userId)) {
$result['success'] = true;
} else {
$result['success'] = false;
$result['errorMsg'] = 'Cannot create user';
}
} else {
$result['success'] = false;
$result['errorMsg'] = 'Cannot create user';
}
ob_clean();
echo json_encode($result);

View File

@@ -0,0 +1,30 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/

View File

@@ -0,0 +1,38 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
$cronMessage = $installer->getCronMessage();
$smarty->assign('cronTitle', $cronMessage['message']);
$smarty->assign('cronHelp', $cronMessage['command']);
$installer->setSuccess();
// clean session
session_unset();

View File

@@ -0,0 +1,58 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
$config = $installer->getConfig();
$fields = [
'user-lang' => [
'default' => $config->get('language', 'en_US'),
],
'theme' => [
'default' => $config->get('theme'),
],
];
foreach ($fields as $fieldName => $field) {
if (isset($_SESSION['install'][$fieldName])) {
$fields[$fieldName]['value'] = $_SESSION['install'][$fieldName];
} else {
$fields[$fieldName]['value'] = (isset($field['default']))? $field['default'] : '';
}
}
$language = $installer->createLanguage($_SESSION['install']['user-lang'] ?? 'en_US');
$themes = [];
foreach ($installer->getThemeList() as $item) {
$themes[$item] = $language->translate($item, 'themes', 'Global');
}
$smarty->assign('themeLabel', $language->translate('theme', 'fields', 'Settings'));
$smarty->assign('fields', $fields);
$smarty->assign("themes", $themes);

View File

@@ -0,0 +1,74 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
ob_start();
$result = ['success' => false, 'errorMsg' => ''];
if (!empty($_SESSION['install'])) {
$paramList = [
'outboundEmailFromName',
'outboundEmailFromAddress',
'outboundEmailIsShared',
];
$preferences = [];
foreach ($paramList as $paramName) {
switch ($paramName) {
case 'outboundEmailIsShared':
$preferences['outboundEmailIsShared'] = $_SESSION['install']['outboundEmailIsShared'] === 'true';
break;
default:
if (array_key_exists($paramName, $_SESSION['install'])) {
$preferences[$paramName] = $_SESSION['install'][$paramName];
}
break;
}
}
$res = $installer->savePreferences($preferences);
if (!empty($res)) {
$result['success'] = true;
} else {
$result['success'] = false;
$result['errorMsg'] = 'Cannot save preferences';
}
} else {
$result['success'] = false;
$result['errorMsg'] = 'Cannot save preferences';
}
ob_clean();
echo json_encode($result);

View File

@@ -0,0 +1,66 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
ob_start();
$result = array('success' => false, 'errorMsg' => '');
if (!empty($_SESSION['install'])) {
$paramList = [
'dateFormat',
'timeFormat',
'timeZone',
'weekStart',
'defaultCurrency',
'thousandSeparator',
'decimalMark',
'language',
];
$preferences = [];
foreach ($paramList as $paramName) {
if (array_key_exists($paramName, $_SESSION['install'])) {
$preferences[$paramName] = $_SESSION['install'][$paramName];
}
}
$res = $installer->savePreferences($preferences);
if (!empty($res)) {
$result['success'] = true;
} else {
$result['success'] = false;
$result['errorMsg'] = 'Cannot save preferences';
}
}
else {
$result['success'] = false;
$result['errorMsg'] = 'Cannot save preferences';
}
ob_clean();
echo json_encode($result);

View File

@@ -0,0 +1,76 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
ob_start();
$result = [
'success' => true,
'errorMsg' => '',
];
// save settings
$database = [
'dbname' => $_SESSION['install']['db-name'],
'user' => $_SESSION['install']['db-user-name'],
'password' => $_SESSION['install']['db-user-password'],
'platform' => $_SESSION['install']['db-platform'] ?? 'Mysql',
];
$host = $_SESSION['install']['host-name'];
if (!str_contains($host, ':')) {
$host .= ":";
}
[$database['host'], $database['port']] = explode(':', $host);
$saveData = [
'database' => $database,
'language' => !empty($_SESSION['install']['user-lang']) ? $_SESSION['install']['user-lang'] : 'en_US',
'siteUrl' => !empty($_SESSION['install']['site-url']) ? $_SESSION['install']['site-url'] : null,
];
if (!empty($_SESSION['install']['theme'])) {
$saveData['theme'] = $_SESSION['install']['theme'];
}
if (!empty($_SESSION['install']['default-permissions-user']) && !empty($_SESSION['install']['default-permissions-group'])) {
$saveData['defaultPermissions'] = [
'user' => $_SESSION['install']['default-permissions-user'],
'group' => $_SESSION['install']['default-permissions-group'],
];
}
if (!$installer->saveData($saveData)) {
$result['success'] = false;
$result['errorMsg'] = $langs['messages']['Can not save settings'];
}
ob_clean();
echo json_encode($result);

View File

@@ -0,0 +1,131 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
ob_start();
$result = [
'success' => true,
'errors' => [],
];
$phpRequiredList = $installer->getSystemRequirementList('php', true);
foreach ($phpRequiredList as $name => $details) {
if (!$details['acceptable']) {
switch ($details['type']) {
case 'version':
$result['success'] = false;
$result['errors']['phpVersion'] = $details['required'];
break;
default:
$result['success'] = false;
$result['errors']['phpRequires'][] = $name;
break;
}
}
}
$allPostData = $postData->getAll();
if (
$result['success'] &&
!empty($allPostData['dbName']) &&
!empty($allPostData['hostName']) &&
!empty($allPostData['dbUserName'])
) {
$connect = false;
$dbName = trim($allPostData['dbName']);
if (!str_contains($allPostData['hostName'], ':')) {
$allPostData['hostName'] .= ":";
}
[$hostName, $port] = explode(':', trim($allPostData['hostName']));
$dbUserName = trim($allPostData['dbUserName']);
$dbUserPass = trim($allPostData['dbUserPass']);
if (!$port) {
$port = null;
}
$platform = $allPostData['dbPlatform'] ?? 'Mysql';
$databaseParams = [
'platform' => $platform,
'host' => $hostName,
'port' => $port,
'user' => $dbUserName,
'password' => $dbUserPass,
'dbname' => $dbName,
];
$isConnected = true;
try {
$installer->checkDatabaseConnection($databaseParams, true);
} catch (\Exception $e) {
$isConnected = false;
$result['success'] = false;
$result['errors']['dbConnect']['errorCode'] = $e->getCode();
$result['errors']['dbConnect']['errorMsg'] = $e->getMessage();
}
if ($isConnected) {
$databaseRequiredList = $installer
->getSystemRequirementList('database', true, ['databaseParams' => $databaseParams]);
foreach ($databaseRequiredList as $name => $details) {
if (!$details['acceptable']) {
switch ($details['type']) {
case 'version':
$result['success'] = false;
$result['errors'][$name] = $details['required'];
break;
default:
$result['success'] = false;
$result['errors'][$name][] = $name;
break;
}
}
}
}
}
ob_clean();
echo json_encode($result);

View File

@@ -0,0 +1,49 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
$phpRequirementList = $installer->getSystemRequirementList('php');
$smarty->assign('phpRequirementList', $phpRequirementList);
$installData = $_SESSION['install'];
$hostData = explode(':', $installData['host-name']);
$dbConfig = [
'host' => $hostData[0] ?? '',
'port' => $hostData[1] ?? '',
'dbname' => $installData['db-name'],
'user' => $installData['db-user-name'],
'password' => $installData['db-user-password'],
'platform' => $installData['db-platform'] ?? null,
];
$mysqlRequirementList = $installer->getSystemRequirementList('database', false, ['databaseParams' => $dbConfig]);
$smarty->assign('mysqlRequirementList', $mysqlRequirementList);
$permissionRequirementList = $installer->getSystemRequirementList('permission');
$smarty->assign('permissionRequirementList', $permissionRequirementList);

View File

@@ -0,0 +1,49 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
$fields = array(
'license-agree' => array(
'default' => '0',
),
);
foreach ($fields as $fieldName => $field) {
if (isset($_SESSION['install'][$fieldName])) {
$fields[$fieldName]['value'] = $_SESSION['install'][$fieldName];
} else {
$fields[$fieldName]['value'] = (isset($fields[$fieldName]['default']))? $fields[$fieldName]['default'] : '';
}
}
$smarty->assign('fields', $fields);
if (file_exists("LICENSE.txt")) {
$license = file_get_contents('LICENSE.txt');
$smarty->assign('license', $license);
}

View File

@@ -0,0 +1,81 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
$clearedCookieList = [
'auth-token-secret',
'auth-username',
'auth-token',
];
foreach ($clearedCookieList as $cookieName) {
if (!isset($_COOKIE[$cookieName])) {
continue;
}
setcookie($cookieName, null, -1, '/');
}
$config = $installer->getConfig();
$fields = [
'db-platform' => [
'default' => $config->get('database.platform', 'Mysql'),
],
'db-driver' => [
'default' => $config->get('database.driver', ''),
],
'db-name' => [
'default' => $config->get('database.dbname', ''),
],
'host-name' => [
'default' => $config->get('database.host', '') .
($config->get('database.port') ? ':' . $config->get('database.port') : ''),
],
'db-user-name' => [
'default' => $config->get('database.user', ''),
],
'db-user-password' => [],
];
foreach ($fields as $fieldName => $field) {
if (isset($_SESSION['install'][$fieldName])) {
$fields[$fieldName]['value'] = $_SESSION['install'][$fieldName];
} else {
$fields[$fieldName]['value'] = $field['default'] ?? '';
}
}
$platforms = [
'Mysql' => 'MySQL / MariaDB',
'Postgresql' => 'PostgreSQL',
];
$smarty->assign('platforms', $platforms);
$smarty->assign('fields', $fields);

View File

@@ -0,0 +1,46 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
$fields = array(
'user-name' => array(
'default' => (isset($langs['labels']['admin']))? $langs['labels']['admin'] : 'admin',
),
'user-pass' => array(),
'user-confirm-pass' => array(),
);
foreach ($fields as $fieldName => $field) {
if (isset($_SESSION['install'][$fieldName])) {
$fields[$fieldName]['value'] = $_SESSION['install'][$fieldName];
} else {
$fields[$fieldName]['value'] = (isset($fields[$fieldName]['default']))? $fields[$fieldName]['default'] : '';
}
}
$smarty->assign('fields', $fields);

View File

@@ -0,0 +1,72 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
$config = $installer->getConfig();
$metadata = $installer->getMetadata();
$fields = [
'dateFormat' => [
'default' => $config->get('dateFormat'),
'options' => $metadata->get(['app', 'dateTime', 'dateFormatList']) ?? [],
],
'timeFormat' => [
'default'=> $config->get('timeFormat'),
'options' => $metadata->get(['app', 'dateTime', 'timeFormatList']) ?? [],
],
'timeZone' => [
'default'=> $config->get('timeZone', 'UTC'),
],
'weekStart' => [
'default'=> $config->get('weekStart', 0),
],
'defaultCurrency' => [
'default' => $config->get('defaultCurrency', 'USD'),
],
'thousandSeparator' => [
'default' => $config->get('thousandSeparator', ','),
],
'decimalMark' => [
'default' => $config->get('decimalMark', '.'),
],
'language' => [
'default' => (!empty($_SESSION['install']['user-lang'])) ?
$_SESSION['install']['user-lang'] :
$config->get('language', 'en_US'),
],
];
foreach ($fields as $fieldName => $field) {
if (isset($_SESSION['install'][$fieldName])) {
$fields[$fieldName]['value'] = $_SESSION['install'][$fieldName];
} else {
$fields[$fieldName]['value'] = isset($field['default']) ? $field['default'] : '';
}
}
$smarty->assign('fields', $fields);

View File

@@ -0,0 +1,52 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
$config = $installer->getConfig();
$fields = [
'outboundEmailFromName' => [
'default' => $config->get('outboundEmailFromName'),
],
'outboundEmailFromAddress' => [
'default' => $config->get('outboundEmailFromAddress'),
],
'outboundEmailIsShared' => [
'default' => $config->get('outboundEmailIsShared', false),
],
];
foreach ($fields as $fieldName => $field) {
if (isset($_SESSION['install'][$fieldName])) {
$fields[$fieldName]['value'] = $_SESSION['install'][$fieldName];
} else {
$fields[$fieldName]['value'] = isset($field['default']) ? $field['default'] : '';
}
}
$smarty->assign('fields', $fields);

View File

@@ -0,0 +1,30 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
return [];

View File

@@ -0,0 +1,102 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
return [
'EmailTemplate' => [
[
'name' => 'Case-to-Email auto-reply',
'subject' => 'Case has been created',
'body' => '<p>{Person.name},</p><p>Case \'{Case.name}\' has been created with number '.
'{Case.number} and assigned to {User.name}.</p>',
'isHtml ' => '1',
]
],
'ScheduledJob' => [
[
'name' => 'Check Group Email Accounts',
'job' => 'CheckInboundEmails',
'status' => 'Active',
'scheduling' => '*/2 * * * *',
],
[
'name' => 'Check Personal Email Accounts',
'job' => 'CheckEmailAccounts',
'status' => 'Active',
'scheduling' => '*/1 * * * *',
],
[
'name' => 'Send Email Reminders',
'job' => 'SendEmailReminders',
'status' => 'Active',
'scheduling' => '*/2 * * * *',
],
[
'name' => 'Send Email Notifications',
'job' => 'SendEmailNotifications',
'status' => 'Active',
'scheduling' => '*/2 * * * *',
],
[
'name' => 'Clean-up',
'job' => 'Cleanup',
'status' => 'Active',
'scheduling' => '1 1 * * 0',
],
[
'name' => 'Send Mass Emails',
'job' => 'ProcessMassEmail',
'status' => 'Active',
'scheduling' => '10,30,50 * * * *',
],
[
'name' => 'Auth Token Control',
'job' => 'AuthTokenControl',
'status' => 'Active',
'scheduling' => '*/6 * * * *',
],
[
'name' => 'Control Knowledge Base Article Status',
'job' => 'ControlKnowledgeBaseArticleStatus',
'status' => 'Active',
'scheduling' => '10 1 * * *',
],
[
'name' => 'Process Webhook Queue',
'job' => 'ProcessWebhookQueue',
'status' => 'Active',
'scheduling' => '*/2 * * * *',
],
[
'name' => 'Send Scheduled Emails',
'job' => 'SendScheduledEmails',
'status' => 'Active',
'scheduling' => '*/10 * * * *',
],
],
];

99
install/core/config.php Normal file
View File

@@ -0,0 +1,99 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
return [
'apiPath' => '/api/v1',
'rewriteRules' => [
'APACHE1' => 'sudo a2enmod rewrite
sudo service apache2 restart',
'APACHE2' => '&#60;Directory /PATH_TO_ESPO/&#62;
AllowOverride <b>All</b>
&#60;/Directory&#62;',
'APACHE2_PATH1' => '/etc/apache2/sites-available/ESPO_VIRTUAL_HOST.conf',
'APACHE2_PATH2' => '/etc/apache2/apache2.conf',
'APACHE2_PATH3' => '/etc/httpd/conf/httpd.conf',
'APACHE3' => 'sudo service apache2 restart',
'APACHE4' => '# RewriteBase /',
'APACHE5' => 'RewriteBase {ESPO_PATH}{API_PATH}',
'WINDOWS_APACHE1' => 'LoadModule rewrite_module modules/mod_rewrite.so',
'NGINX_PATH' => '/etc/nginx/sites-available/YOUR_SITE',
'NGINX' => 'server {
# ...
client_max_body_size 50M;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location /api/v1/ {
if (!-e $request_filename){
rewrite ^/api/v1/(.*)$ /api/v1/index.php last; break;
}
}
location /portal/ {
try_files $uri $uri/ /portal/index.php?$query_string;
}
location /api/v1/portal-access {
if (!-e $request_filename){
rewrite ^/api/v1/(.*)$ /api/v1/portal-access/index.php last; break;
}
}
location ~ /reset/?$ {
try_files /reset.html =404;
}
location ^~ (api|client)/ {
if (-e $request_filename){
return 403;
}
}
location ^~ /data/ {
deny all;
}
location ^~ /application/ {
deny all;
}
location ^~ /custom/ {
deny all;
}
location ^~ /vendor/ {
deny all;
}
location ~ /\.ht {
deny all;
}
}',
'APACHE_LINK' => 'https://www.espocrm.com/documentation/administration/apache-server-configuration/',
'NGINX_LINK' => 'https://www.espocrm.com/documentation/administration/nginx-server-configuration/',
],
];

View File

@@ -0,0 +1,146 @@
{
"labels": {
"Main page title": "مرحبا بكم في EspoCRM",
"Start page title": "اتفاقية الترخيص",
"Step1 page title": "اتفاقية الترخيص",
"License Agreement": "اتفاقية الترخيص",
"I accept the agreement": "أنا أوافق على الشروط",
"Step2 page title": "إعدادات قاعدة البيانات",
"Step3 page title": "إعداد المسؤول",
"Step4 page title": "إعدادات النظام",
"Step5 page title": "إعدادات SMTP لرسائل البريد الإلكتروني الصادرة",
"Errors page title": "الأخطاء",
"Finish page title": "اكتمل التثبيت",
"Congratulation! Welcome to EspoCRM": "تهنئة! تم تثبيت EspoCRM بنجاح.",
"More Information": "لمزيد من المعلومات، الرجاء زيارة {BLOG}، متابعتنا على {TWITTER}. <br><br> إن كان لديك إقتراحات أو أسئلة، يُرجى السؤال في {FORUM}.",
"share": "إذا كنت ترغب EspoCRM ، تقاسمها مع أصدقائك. أخبرهم عن هذا المنتج.",
"blog": "المدونة",
"twitter": "تويتر",
"forum": "المنتدى",
"Installation Guide": "دليل التثبيت",
"admin": "مسؤول",
"Locale": "محلي",
"Outbound Email Configuration": "إعدادات البريد الإلكتروني الصادر",
"Start": "إبدأ",
"Back": "الرجوع",
"Next": "التالي",
"Go to EspoCRM": "إذهب الى EspoCRM",
"Re-check": "إعادة الفحص",
"Version": "الإصدار",
"Test settings": "فحص الإتصال",
"Database Settings Description": "أدخل معلومات اتصال قاعدة بيانات ميسكل (اسم المضيف واسم المستخدم وكلمة المرور). يمكنك تحديد منفذ وحدة الخدمة لاسم المضيف مثل localhost:3306.",
"Install": "تثبيت",
"Configuration Instructions": "تعليمات التكوين",
"phpVersion": "إصدار الـPHP",
"requiredMysqlVersion": "إصدار MySQL",
"dbHostName": "اسم المضيف",
"dbName": "اسم قاعدة البيانات",
"dbUserName": "اسم مستخدم قاعدة البيانات",
"OK": "حسنا",
"SetupConfirmation page title": "متطلبات النظام",
"PHP Configuration": "إعدادات PHP",
"MySQL Configuration": "إعدادات قاعدة البيانات",
"Permission Requirements": "أذونات",
"Success": "النجاح",
"Fail": "يفشل",
"is recommended": "موصى به",
"extension is missing": "التمديد مفقود",
"headerTitle": "تركيب EspoCRM",
"Crontab setup instructions": "بدون تشغيل رسائل البريد الإلكتروني الواردة المجدولة ، لن تعمل الإشعارات والتذكيرات. هنا يمكنك قراءة {SETUP_INSTRUCTIONS}.",
"Setup instructions": "تعليمات الإعداد"
},
"fields": {
"Choose your language": "أختر لغتك",
"Database Name": "اسم قاعدة البيانات",
"Host Name": "اسم المضيف",
"Port": "البوابة",
"smtpPort": "البوابة",
"Database User Name": "اسم مستخدم قاعدة البيانات",
"Database User Password": "كلمة مرور مستخدم قاعدة البيانات",
"Database driver": "برنامج تشغيل قاعدة البيانات",
"User Name": "اسم المستخدم",
"Password": "كلمة المرور",
"smtpPassword": "كلمة المرور",
"Confirm Password": "اعادة كتابة كلمة المرور",
"From Address": "من العنوان",
"From Name": "من الاسم",
"Is Shared": "انه مشترك",
"Date Format": "من تاريخ",
"Time Format": "صيغة الوقت",
"Time Zone": "المنطقة الزمنية",
"First Day of Week": "اول ايام الاسبوع",
"Thousand Separator": "فاصل الألف",
"Decimal Mark": "علامة عشرية",
"Default Currency": "العملة الافتراضية",
"Currency List": "قائمة العملات",
"Language": "اللغة",
"smtpServer": "الخادم",
"smtpAuth": "المصادقة",
"smtpSecurity": "حماية",
"smtpUsername": "اسم المستخدم",
"emailAddress": "البريد الإلكتروني"
},
"messages": {
"1045": "الوصول مرفوض للمستخدم",
"1049": "قاعدة بيانات غير معروفة",
"2005": "خادم مضيف MySQL غير معروف",
"Some errors occurred!": "وقعت بعض الأخطاء!",
"phpVersion": "أصدار الـ PHP الخاص بك لا يدعم بواسطة EngazMedia EspoCRM, يرجي التحديث إلي {minVersion} علي الأقل",
"requiredMysqlVersion": "إصدار MySQL الخاص بك غير مدعوم من قِبل EngazMedia EspoCRM ، يرجى التحديث إلى {minVersion} على الأقل",
"The PHP extension was not found...": "خطأ PHP: لم يتم العثور على الامتداد <b> {extName} </ b>.",
"All Settings correct": "جميع الإعدادات صحيحة",
"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": "تفعيل Mode_rewrite في الأباتشي",
"checkWritable error": "تحقق خطأ كتابي",
"applySett error": "تطبيق خطأ",
"buildDatabase error": "خطأ في بناء قاعدة البيانات",
"createUser error": "خطأ في إنشاء مستخدم",
"Cannot create user": "لا تستطيع انشاء مستخدم",
"Permission denied": "الإذن مرفوض",
"Permission denied to": "الإذن مرفوض",
"Can not save settings": "لا يمكن حفظ الإعدادات",
"Cannot save preferences": "لا يمكن حفظ التفضيلات",
"Thousand Separator and Decimal Mark equal": "لا يمكن أن يكون الفاصل والعلامة العشرية متساويين",
"extension": "امتداد {0} مفقود",
"option": "القيمة الموصى بها هي {0}",
"mysqlSettingError": "EspoCRM يحتاج إلى إعدادات قاعدة البيانات \"{NAME}\" لتُصبح {VALUE}",
"requiredMariadbVersion": "إصدار MariaDB الخاص بك غير مدعوم من قبل EspoCRM ، يرجى التحديث إلى MariaDB {minVersion} على الأقل",
"Ajax failed": "حدث خطأ غير متوقع",
"Bad init Permission": "تم رفض الإذن للدليل \"{*}\". يرجى تعيين 775 لـ \"{*}\" أو فقط تنفيذ هذا الأمر في المحطة <pre> <b> {C} </b> </pre> هل العملية غير مسموح بها؟ جرب هذا: {CSU}",
"permissionInstruction": "<br> شغّل هذا الأمر في Terminal: <pre> <b> \"{C}\" </b> </pre>",
"operationNotPermitted": "العملية غير مسموح بها؟ جرب هذا: <br> <br> {CSU}"
},
"options": {
"db driver": {
"mysqli": "MySQLi\n"
},
"modRewriteTitle": {
"apache": "<h3> خطأ API: EspoCRM API غير متوفر. </ h3> <br> قم بالخطوات الضرورية فقط. بعد كل خطوة تحقق من حل المشكلة.",
"nginx": "<h3> خطأ API: EspoCRM API غير متوفر. </ h3>",
"microsoft-iis": "<h3> خطأ API: EspoCRM API غير متوفر. </ h3> <br> المشكلة المحتملة: تعطيل \"إعادة كتابة عنوان URL\". يرجى التحقق من وحدة \"إعادة كتابة عنوان URL\" وتمكينها في خادم IIS",
"default": "<h3> خطأ API: EspoCRM API غير متوفر. </ h3> <br> المشاكل المحتملة: تعطيل وحدة إعادة الكتابة. يرجى التحقق من وحدة إعادة الكتابة وتمكينها في الخادم الخاص بك (مثل mod_rewrite في Apache) ودعم htaccess."
},
"modRewriteInstruction": {
"apache": {
"linux": "<br> <br> <h4> 1. قم بتمكين \"mod_rewrite\". </h4> لتمكين <i> mod_rewrite </i> ، قم بتشغيل هذه الأوامر في محطة طرفية: <br> <br> <pre> {APACHE1} </pre> <hr> <h4> 2 . إذا لم تساعدك الخطوة السابقة ، فحاول تمكين دعم .htaccess. </h4> إضافة / تحرير إعدادات تهيئة الخادم <code> {APACHE2_PATH1} </code> أو <code> {APACHE2_PATH2} </code> (أو < الكود> {APACHE2_PATH3} </code>): <br> <br> <pre> {APACHE2} </pre>\n بعد ذلك قم بتشغيل هذا الأمر في المحطة: <br> <br> <pre> {APACHE3} </pre> <hr> <h4> 3. إذا لم تساعدك الخطوة السابقة ، فحاول إضافة مسار RewriteBase. </h4> افتح ملفًا <code> {API_PATH} .htaccess </code> واستبدل السطر التالي: <br> <br> <pre> { APACHE4} </pre> إلى <br> <br> <pre> {APACHE5} </pre> <hr> لمزيد من المعلومات ، يرجى زيارة الإرشادات <a href=\"{APACHE_LINK}\" target=\"_blank\"> خادم Apache تهيئة لـ EspoCRM </a>. <br>",
"windows": "<br> <br> <h4> 1. ابحث عن ملف httpd.conf. </h4> يمكن العثور عليه عادةً في مجلد يسمى \"conf\" أو \"config\" أو أي شيء من هذا القبيل. <br> <br> <h4> 2. قم بتحرير ملف httpd.conf. </h4> داخل ملف httpd.conf ، قم بإلغاء التعليق على السطر <code> {WINDOWS_APACHE1} </code> (قم بإزالة علامة الجنيه \"#\" من أمام السطر). <br> < br> <h4> 3. تحقق من المعلمات الأخرى. </ h4> تحقق أيضًا مما إذا كان السطر <code> ClearModuleList </code> غير مُعلق وتأكد من عدم تعليق السطر <code> AddModule mod_rewrite.c </code>.\n"
},
"nginx": {
"linux": "<br> أضف هذا الرمز إلى ملف تهيئة خادم Nginx <code> {NGINX_PATH} </code> داخل قسم \"الخادم\": <br> <br> <pre> {NGINX} </pre> <br> لمزيد من المعلومات يرجى زيارة التوجيه <a href=\"{NGINX_LINK}\" target=\"_blank\"> تهيئة خادم Nginx لـ EspoCRM </a>. <br> <br>"
}
}
},
"systemRequirements": {
"requiredPhpVersion": "إصدار PHP",
"requiredMysqlVersion": "نسخة MySQL ",
"host": "اسم الامستضيف",
"dbname": "اسم قاعدة البيانات",
"user": "اسم المستخدم",
"writable": "للكتابة",
"readable": "للقرأة",
"requiredMariadbVersion": "إصدار MariaDB"
}
}

View File

@@ -0,0 +1,134 @@
{
"labels": {
"Main page title": "Добре дошли в EspoCRM",
"Start page title": "Лицензионно споразумение",
"Step1 page title": "Лицензионно споразумение",
"License Agreement": "Лицензионно споразумение",
"I accept the agreement": "Приемам споразумението",
"Step2 page title": "Конфигуриране на база данни",
"Step3 page title": "Административни настройки",
"Step4 page title": "Системни настройки",
"Step5 page title": "Настройките на SMTP за изходящи писма",
"Errors page title": "Грешки",
"Finish page title": "Инсталацията приключи успешно",
"Congratulation! Welcome to EspoCRM": "Поздравления! EspoCRM е инсталиран успешно.",
"More Information": "За повече информация, моля посетете нашия {BLOG}, следете ни в {TWITTER} <br> <br> Ако имате някакви предложения или въпроси, моля пишете ни в {FORUM}",
"share": "Ако харесвате EspoCRM, споделете ни с приятелите си. Накарайте ги да знаят за този продукт.",
"blog": "блог",
"forum": "форум",
"Installation Guide": "Ръководство за инсталиране",
"admin": "администратор",
"Locale": "Езикови настройки",
"Outbound Email Configuration": "Конфигурация за изходящи имейли",
"Start": "Начало",
"Back": "Назад",
"Next": "Напред",
"Go to EspoCRM": "Напред към EspoCRM",
"Re-check": "Повторна проверка",
"Version": "Версия",
"Test settings": "Тест на конфигурацията",
"Database Settings Description": "Въведете MySQL данните за връзка с базата данни (име на хост, потребителско име и парола). Може да зададете порт на базата данни като например 3306.",
"Install": "Инсталирай",
"Configuration Instructions": "Инструкция за конфигуриране",
"phpVersion": "PHP версия",
"dbHostName": "Хост/Сървър",
"dbName": "Име на базата данни",
"dbUserName": "Потребителско име за базата данни",
"OK": "Добре",
"SetupConfirmation page title": "Системни изисквания",
"PHP Configuration": "Настройки на PHP",
"MySQL Configuration": "Настройки на базата данни",
"Permission Requirements": "Права",
"Success": "Успешно",
"Fail": "Неуспешно",
"is recommended": "се препоръчва",
"extension is missing": "разширението липсва",
"headerTitle": "EspoCRM инсталация",
"Crontab setup instructions": "Без стартиране на планирани задачи входящите имейли, известията и напомнянията няма да работят. Тук можете да прочетете повече {SETUP_INSTRUCTIONS}.",
"Setup instructions": "инструкции за настройка",
"requiredMysqlVersion": "MySQL версия",
"requiredMariadbVersion": "MariaDB версия",
"requiredPostgresqlVersion": "PostgreSQL версия"
},
"fields": {
"Choose your language": "Изберете вашия език",
"Database Name": "Име на базата данни",
"Host Name": "Хост / сървър",
"Port": "Порт",
"smtpPort": "Порт",
"Database User Name": "Потребителско име за базата данни",
"Database User Password": "Парола",
"Database driver": "Драйвър за базата данни",
"User Name": "Потребителско име",
"Password": "Парола",
"smtpPassword": "Парола",
"Confirm Password": "Потвърдите паролата",
"From Address": "От Адрес",
"From Name": "От име",
"Is Shared": "Споделен с другите потребители",
"Date Format": "Формат на датата",
"Time Format": "Формат на времето",
"Time Zone": "Часова зона",
"First Day of Week": "Първи ден от седмицата",
"Thousand Separator": "Разделител за хилядни числа",
"Decimal Mark": "Десетичен знак",
"Default Currency": "Валути по подразбиране",
"Currency List": "Списък с валути",
"Language": "Език",
"smtpServer": "Сървър",
"smtpAuth": "Удостоверяване",
"smtpSecurity": "Сигурност",
"smtpUsername": "Потребител",
"emailAddress": "Електронна поща",
"Platform": "Платформа"
},
"messages": {
"1045": "Отказан достъп за потребителя",
"1049": "Неизвестна база данни",
"2005": "Неизвестен хост за базата данни",
"Some errors occurred!": "Имате грешка в конфигурацията!",
"phpVersion": "Вашата PHP версия не се поддържа от EspoCRM, моля обновете до PHP {minVersion}.",
"requiredMysqlVersion": "Вашата MySQL версия не се поддържа от EspoCRM, моля обновете до MySQL {minVersion}.",
"The PHP extension was not found...": "PHP Грешка: разширението <b> {extName} </b> не беше намерено.",
"All Settings correct": "Всички настройки са правилни",
"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 конфигурацията",
"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": "Разделителя на хилядните числа и десетичния знак не могат да бъдат еднакви",
"extension": "{0} разширението липсва",
"option": "Препоръчителната стойност е {0}",
"mysqlSettingError": "EspoCRM изисква настройката на MySQL \"{NAME}\", да се промени на {VALUE}",
"requiredMariadbVersion": "Вашата версия на MariaDB не се поддържа от EspoCRM, моля, актуализирайте до MariaDB {minVersion}",
"Ajax failed": "Възникна неочаквана грешка",
"Bad init Permission": "Нямате достатъчно права за директорията „{*}“. Моля, задайте права 775 за \"{*}\" или просто изпълнете тази команда в терминала <pre><b>{C}</b></pre> Операцията не е разрешена? Опитайте това: {CSU}",
"permissionInstruction": "<br>Изпълнете тази команда в терминала:<pre><b>\"{C}\"</b></pre>",
"operationNotPermitted": "Операцията не е разрешена? Опитайте това: <br><br>{CSU}"
},
"systemRequirements": {
"requiredPhpVersion": "PHP версия",
"requiredMysqlVersion": "MySQL версия",
"host": "Сървър",
"dbname": "Име на базата данни",
"user": "Потребителско име",
"requiredMariadbVersion": "MariaDB версия"
},
"options": {
"modRewriteTitle": {
"apache": "<h3>Грешка в API: API интерфейса на системата не е наличен.</h3><br>Направете само необходимите стъпки. След всяка стъпка проверявайте дали проблемът е решен.",
"nginx": "<h3>Грешка в API: API на EspoCRM не е наличен.</h3>",
"microsoft-iis": "<h3>Грешка в API: API на EspoCRM не е наличен.</h3><br> Възможен проблем: деактивирано „URL Rewrite“. Моля, проверете и активирайте модула „URL Rewrite“ в IIS сървъра"
}
}
}

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1,119 @@
{
"labels": {
"Main page title": "Velkommen til EspoCRM",
"Start page title": "Licensaftale",
"Step1 page title": "Licensaftale",
"License Agreement": "Licensaftale",
"I accept the agreement": "Jeg accepterer aftalen",
"Step2 page title": "Database konfiguration",
"Step4 page title": "Systemindstillinger",
"Step5 page title": "SMTP indstillinger for udgående emails",
"Errors page title": "Fejl",
"Finish page title": "Installationen er fuldført",
"Congratulation! Welcome to EspoCRM": "Tillykke! EspoCRM er installeret succesfuldt.",
"More Information": "Besøg venligst vores {BLOG} for mere information, følg os på {TWITTER}.<br><br>Henvend dig venligst i {FORUM} hvis du har forslag eller spørgsmål.",
"share": "Hvis du kan lide EspoCRM beder vi dig dele det med dine venner. Lad dem høre om dette produkt.",
"Installation Guide": "Installationsguide",
"Locale": "Område",
"Outbound Email Configuration": "Indstillinger for Udgående Email",
"Back": "Tilbage",
"Next": "Næste",
"Go to EspoCRM": "Gå til EspoCRM",
"Re-check": "Kontroller igen",
"Test settings": "Test Forbindelse",
"Database Settings Description": "Indtast forbindelses-information for din MySQL database (Hostnavn, brugernavn og kodeord). Du kan angive server port for hostnavn som localhost:3306.",
"Install": "Installer",
"Configuration Instructions": "Indstillingsvejledning",
"dbHostName": "Hostnavn",
"dbName": "Databasenavn",
"dbUserName": "Database Brugernavn",
"SetupConfirmation page title": "Systemkrav",
"PHP Configuration": "PHP indstillinger",
"MySQL Configuration": "Database indstillinger",
"Permission Requirements": "Tilladelser",
"Success": "Succes",
"Fail": "Fejl",
"is recommended": "Anbefales",
"extension is missing": "Udvidelse mangler"
},
"fields": {
"Choose your language": "Vælg dit sprog",
"Database Name": "Databasenavn",
"Host Name": "Hostnavn",
"Database User Name": "Database Brugernavn",
"Database User Password": "Database brugerkodeord",
"User Name": "Brugernavn",
"Password": "Kodeord",
"smtpPassword": "Kodeord",
"Confirm Password": "Bekræft Kodeord",
"From Address": "Fra Adresse",
"From Name": "Fra Navn",
"Is Shared": "Er Delt",
"Date Format": "Datoformat",
"Time Format": "Tidsformat",
"Time Zone": "Tidszone",
"First Day of Week": "Første Dag i Ugen",
"Thousand Separator": "Tusindtalsseparator",
"Decimal Mark": "Decimaltegn",
"Default Currency": "Standard Valuta",
"Currency List": "Valutaliste",
"Language": "Sprog",
"smtpSecurity": "Sikkerhed",
"smtpUsername": "Brugernavn"
},
"messages": {
"1045": "Brugeren nægtet adgang",
"1049": "Ukendt database",
"2005": "Ukendt MySQL server host",
"Some errors occurred!": "Der opstod nogle fejl!",
"phpVersion": "Din PHP version er ikke supporteret af EspoCRM, venligst opdater som minimum til PHP {minVersion}",
"requiredMysqlVersion": "Din MySQL version er ikke supporteret af EspoCRM, venligst opdater som minimum til MySQL {minVersion}",
"The PHP extension was not found...": "PHP-fejl: Udvidelsen <b>{extName}</b> blev ikke fundet.",
"All Settings correct": "Alle indstillinger er korrekte.",
"Failed to connect to database": "Kunne ikke forbinde til database.",
"You must agree to the license agreement": "Du skal erklære dig enig i licensaftalen.",
"Passwords do not match": "Kodeord er ikke ens",
"Enable mod_rewrite in Apache server": "Aktiver mod_rewrite i Apache server",
"checkWritable error": "checkWritable fejl",
"applySett error": "applySelf fejl",
"buildDatabase error": "buildDatabase fejl",
"createUser error": "createUser fejl",
"checkAjaxPermission error": "checkAjaxPermission fejl",
"Cannot create user": "Kan ikke oprette bruger",
"Permission denied": "Tilladelse nægtet",
"Permission denied to": "Tilladelse nægtet",
"Can not save settings": "Kan ikke gemme indstillinger",
"Cannot save preferences": "Kan ikke gemme brugerindstillinger",
"Thousand Separator and Decimal Mark equal": "Tusindtalsseparator og decimaltegn kan ikke være det samme",
"extension": "{0} udvidelse mangler",
"option": "Anbefalet værdi er {0}",
"mysqlSettingError": "EspoCRM kræver MySQL-indstillingen \"{NAME}\" sat til {VALUE} ",
"requiredMariadbVersion": "Din MariaDB version er ikke understøttet af EspoCRM, opdater venligst til MariaDB {minVersion} i det mindste",
"Ajax failed": "En uventet fejl opstået"
},
"options": {
"modRewriteInstruction": {
"apache": {
"windows": "<br> <pre>1. Find httpd.conf filen (den findes normalt i en mappe kaldet conf, config eller noget i den retning)<br>\n2. I httpd.conf file skal linjen <code>{WINDOWS_APACHE1}</code> aktiveres (fjern #-tegnet foran linjen)<br>\n3. Tjek at linjen ClearModuleList er uden #-tegn og linjen AddModule mod_rewrite.c må heller ikke have #-tegnet i begyndelsen.\n</pre>",
"linux": "<br><br>1.Aktiver \"mod_rewrite\". Kør disse kommandoer i et terminalvindue:<pre>{APACHE1}</pre><br>2. Aktiver .htaccess understøttelse. Tilføj/rediger Server konfigurationsindstillinger (<code>{APACHE2_PATH1}</code>, <code>{APACHE2_PATH2}</code>, <code>{APACHE2_PATH3}</code>):<pre>{APACHE2}</pre>\nKør derefter denne kommando i et terminalvindue:<pre>{APACHE3}</pre><br>3. Prøv at tilføje RewriteBase stien, åbn en fil {API_PATH}.htaccess og erstat den følgende linje:<pre>{APACHE4}</pre>Med<pre>{APACHE5}</pre><br> For mere information besøg venligst guiden <a href=\"{APACHE_LINK}\" target=\"_blank\">Apache server configuration for EspoCRM</a>.<br><br> "
},
"nginx": {
"linux": "<br> Tilføj denne kode til din Nginx servers config fil <code>{NGINX_PATH}</code> indenfor \"server\" sektionen:<pre>{NGINX}</pre> <br> For mere information besøg venligst guiden <a href=\"{NGINX_LINK}\" target=\"_blank\">Nginx server configuration for EspoCRM</a>.<br><br> "
}
},
"modRewriteTitle": {
"apache": "<h3>API Fejl: EspoCRM API er utilgængelig.</h3><br>Foretag kun nødvendige skridt. Tjek efter hvert skridt om problemet er løst.",
"nginx": "<h3>API Fejl: EspoCRM API er utilgængelig.</h3>",
"microsoft-iis": "<h3>API Fejl: EspoCRM API er utilgængelig.</h3><br> Muligt problem: deaktiveret \"URL Rewrite\". Venligst tjek og aktiver \"URL Rewrite\" Modulet i IIS serveren.",
"default": "<h3>API Fejl: EspoCRM API er utilgængelig.</h3><br> Muligt problem: deaktiveret Rewrite Modul. Venligst tjek og aktiver Rewrite Modulet i din server (f.eks. mod_rewrite i Apache) og .htaccess understøttelse."
}
},
"systemRequirements": {
"requiredMysqlVersion": "MySQL version",
"host": "Værtsnavn",
"dbname": "Database navn",
"user": "Brugernavn",
"writable": "Skrivbar",
"readable": "Læsbar"
}
}

View File

@@ -0,0 +1,136 @@
{
"labels": {
"Main page title": "Willkommen bei EspoCRM",
"Start page title": "Lizenzvereinbarung",
"Step1 page title": "Lizenzvereinbarung",
"License Agreement": "Lizenzvereinbarung",
"I accept the agreement": "Ich stimme der Vereinbarung zu",
"Step2 page title": "Datenbankkonfiguration",
"Step3 page title": "Einstellungen Administrator",
"Step4 page title": "Systemeinstellungen",
"Step5 page title": "SMTP-Einstellungen für ausgehende E-Mails",
"Errors page title": "Fehler",
"Finish page title": "Die Installation ist abgeschlossen",
"Congratulation! Welcome to EspoCRM": "Gratulation! EspoCRM wurde erfolgreich installiert.",
"More Information": "Für mehr Informationen besuchen Sie bitte unseren {BLOG} und/oder folgen Sie uns auf {TWITTER}.<br><br>Für Fragen oder Verbesserungsvorschläge besuchen Sie das {FORUM}.",
"share": "Wenn Ihnen EspoCRM gefällt, dann erzählen Sie Ihren Freunden davon und teilen Sie es auf FB, Twitter oder G+ .",
"blog": "Blog",
"twitter": "Twitter",
"forum": "Forum",
"Installation Guide": "Installationshandbuch",
"Locale": "Lokale Einstellungen",
"Outbound Email Configuration": "Einstellungen für ausgehende E-Mails",
"Back": "Zurück",
"Next": "Weiter",
"Go to EspoCRM": "Zu EspoCRM",
"Re-check": "Überprüfung wiederholen",
"Test settings": "Verbindung überprüfen",
"Database Settings Description": "Geben Sie die Verbindungsinformationen für Ihre MySQL Datenbank ein (Hostname, Benutzername und Passwort). Ein abweichender Port kann im Format localhost:3306 im Hostnamen-Feld definiert werden.",
"Install": "Installieren",
"Configuration Instructions": "Konfigurationsanleitung",
"phpVersion": "PHP Version",
"dbHostName": "Hostname",
"dbName": "Datenbankname",
"dbUserName": "Datenbankbenutzer",
"SetupConfirmation page title": "Systemanforderungen",
"PHP Configuration": "PHP Einstellungen",
"MySQL Configuration": "Datenbank-Einstellungen",
"Permission Requirements": "Berechtigungen",
"Success": "Erfolgreich",
"Fail": "Fehlgeschlagen",
"is recommended": "wird empfohlen",
"extension is missing": "Erweiterung fehlt",
"Crontab setup instructions": "Ohne die Ausführung geplanter Jobs werden eingehende E-Mails, Benachrichtigungen und Erinnerungen nicht funktionieren. Hier können Sie die {SETUP_INSTRUCTIONS} lesen.",
"Setup instructions": "Setup-Anweisungen",
"requiredMariadbVersion": "MariaDB Version",
"requiredPostgresqlVersion": "PostgreSQL Version"
},
"fields": {
"Choose your language": "Wählen Sie Ihre Sprache",
"Database Name": "Datenbankname",
"Host Name": "Hostname",
"Database User Name": "Datenbankbenutzer",
"Database User Password": "Datenbankpasswort",
"Database driver": "Datenbanktreiber",
"User Name": "Benutzername",
"Password": "Passwort",
"smtpPassword": "Passwort",
"Confirm Password": "Bestätigen Sie Ihr Passwort",
"From Address": "Absenderadresse",
"From Name": "Absendername",
"Is Shared": "Für alle Benutzer verwenden",
"Date Format": "Datumsformat",
"Time Format": "Zeitformat",
"Time Zone": "Zeitzone",
"First Day of Week": "Erster Tag der Woche",
"Thousand Separator": "Tausendertrennzeichen",
"Decimal Mark": "Dezimaltrennzeichen",
"Default Currency": "Standardwährung",
"Currency List": "Währungsliste",
"Language": "Sprache",
"smtpAuth": "Authentifizierung",
"smtpSecurity": "Transportsicherheit",
"smtpUsername": "Benutzername",
"emailAddress": "E-Mail",
"Platform": "Plattform"
},
"messages": {
"1045": "Zugriff für Benutzer nicht erlaubt",
"1049": "Unbekannte Datenbank",
"2005": "Unbekannter MySQL Server",
"Some errors occurred!": "Es sind Fehler aufgetreten!",
"phpVersion": "Ihre PHP Version wird von EspoCRM nicht unterstützt. Bitte aktualisieren Sie zumindest auf {minVersion}",
"requiredMysqlVersion": "Ihre MySQL Version wird von EspoCRM nicht unterstützt. Bitte aktualisieren Sie zumindest auf MySQL {minVersion}",
"The PHP extension was not found...": "PHP Fehler: Erweiterung <b>{extName}</b> wurde nicht gefunden.",
"All Settings correct": "Alle Einstellungen sind korrekt",
"Failed to connect to database": "Konnte nicht zur Datenbank verbinden",
"PHP version": "PHP Version",
"You must agree to the license agreement": "Sie müssen der Lizenzvereinbarung zustimmen",
"Passwords do not match": "Die Passwörter stimmen nicht überein",
"Enable mod_rewrite in Apache server": "Aktivieren Sie mod_rewrite im Apache Server",
"checkWritable error": "checkWritable Fehler",
"applySett error": "applySett Fehler",
"buildDatabase error": "buildDatabase Fehler",
"createUser error": "createUser Fehler",
"checkAjaxPermission error": "checkAjaxPermission Fehler",
"Cannot create user": "Kann keinen Benutzer erstellen",
"Permission denied": "Zugriff verweigert",
"Permission denied to": "Zugriff verweigert",
"Can not save settings": "Kann Einstellungen nicht speichern",
"Cannot save preferences": "Kann Benutzereinstellungen nicht speichern",
"Thousand Separator and Decimal Mark equal": "Das Tausendertrennzeichen und das Dezimaltrennzeichen können nicht gleich sein",
"extension": "{0} Erweiterung fehlt",
"option": "Empfohlener Wert ist {0}",
"mysqlSettingError": "EspoCRM erfordert, dass die MySQL Einstellung \"{NAME}\" auf {VALUE} gesetzt ist",
"requiredMariadbVersion": "Ihre MariaDB-Version wird von EspoCRM nicht unterstützt, bitte aktualisieren Sie mindestens auf MariaDB {minVersion}",
"Ajax failed": "Es ist ein unerwarteter Fehler aufgetreten",
"Bad init Permission": "Die Zugriff auf das Verzeichnis \"{*}\" wurde verweigert. Bitte setzen Sie 775 für \"{*}\" oder führen Sie diesen Befehl einfach im Terminal aus <pre><b>{C}</b></pre> Operation ist nicht erlaubt? Versuchen Sie diesen: {CSU}",
"permissionInstruction": "<br>Führen Sie diesen Befehl im Terminal aus:<pre><b>\"{C}\"</b></pre>",
"operationNotPermitted": "Operation ist nicht erlaubt? Versuchen Sie diese: <br><<br>{CSU}"
},
"systemRequirements": {
"host": "Hostname",
"dbname": "Datenbankname ",
"user": "Benutzername",
"writable": "Überschreibbar",
"readable": "Lesbar",
"requiredMariadbVersion": "MariaDB Version"
},
"options": {
"modRewriteTitle": {
"apache": "<h3>API-Fehler: EspoCRM API ist nicht verfügbar.</h3><br>Führen Sie nur notwendigen Schritte aus. Prüfen Sie nach jedem Schritt, ob das Problem gelöst ist.",
"nginx": "<h3>API-Fehler: EspoCRM API ist nicht verfügbar.</h3>",
"microsoft-iis": "<h3>API-Fehler: EspoCRM API ist nicht verfügbar.</h3><br> Mögliches Problem: \"URL Rewrite\" ist deaktiviert. Bitte prüfen und aktivieren Sie das Modul \"URL Rewrite\" im IIS-Server",
"default": "<h3>API-Fehler: EspoCRM API ist nicht verfügbar.</h3><br> Mögliche Probleme: deaktiviertes Rewrite-Modul. Bitte prüfen und aktivieren Sie das Rewrite-Modul in Ihrem Server (z.B. mod_rewrite in Apache) und die .htaccess Unterstützung."
},
"modRewriteInstruction": {
"apache": {
"linux": "<br><br><h4>1. Aktivieren Sie \"mod_rewrite\".</h4>Um <i>mod_rewrite</i>zu aktivieren, führen Sie diese Befehle in einem Terminal aus: <br><br><pre>{APACHE1}</pre><hr><h4>2. Wenn der vorherige Schritt nicht geholfen hat, versuchen Sie, die .htaccess-Unterstützung zu aktivieren.</h4> Fügen Sie die Serverkonfigurationseinstellungen <code>{APACHE2_PATH1}</code> oder <code>{APACHE2_PATH2}</code> (oder <code>{APACHE2_PATH3}</code>):<br><br><pre>{APACHE2} hinzu oder ändern Sie sie.</pre>\n Führen Sie anschließend diesen Befehl in einem Terminal aus:<br><br><pre>{APACHE3}</pre><hr><h4>3. Wenn der vorherige Schritt nicht geholfen hat, versuchen Sie, den RewriteBase-Pfad hinzuzufügen.</h4>Öffnen Sie eine Datei <code>{API_PATH}.htaccess</code> und ersetzen Sie die folgende Zeile:<br><br><pre>{APACHE4}</pre>zu<br><br><pre>{APACHE5}</pre><hr>Weitere Informationen finden Sie im Leitfaden <a href=\"{APACHE_LINK}\" target=\"_blank\">Apache server configuration for EspoCRM</a>.<br><br>",
"windows": "<br><br> <h4>1. Suchen Sie die Datei httpd.conf.</h4>Normalerweise befindet sie sich in einem Ordner namens \"conf\", \"config\" oder so ähnlich.<br><br><h4>2. Bearbeiten Sie die Datei httpd.conf.</h4> In der Datei httpd.conf kommentieren Sie die Zeile <code>{WINDOWS_APACHE1}</code> aus (entfernen Sie das Zeichen '#' vor der Zeile).<br><br><h4>3. Überprüfen Sie andere Parameter.</h4>Prüfen Sie auch, ob die Zeile <code>ClearModuleList</code> unkommentiert ist und stellen Sie sicher, dass die Zeile <code>AddModule mod_rewrite.c</code> nicht auskommentiert ist."
},
"nginx": {
"linux": "<br> Fügen Sie diesen Code <code>{NGINX_PATH}</code> in Ihre Nginx-Serverkonfigurationsdatei im Abschnitt \"server\" ein:<br><br><pre>{NGINX}</pre> <br> Für weitere Informationen besuchen Sie bitte den Leitfaden <a href=\"{NGINX_LINK}\" target=\"_blank\">Nginx server configuration for EspoCRM</a>.<br><br>"
}
}
}
}

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1,158 @@
{
"labels": {
"headerTitle": "EspoCRM Installation",
"Main page title": "Welcome to EspoCRM",
"Main page header": "",
"Start page title": "License Agreement",
"Step1 page title": "License Agreement",
"License Agreement": "License Agreement",
"I accept the agreement": "I accept the agreement",
"Step2 page title": "Database configuration",
"Step3 page title": "Administrator Setup",
"Step4 page title": "System settings",
"Step5 page title": "SMTP settings for outgoing emails",
"Errors page title": "Errors",
"Finish page title": "Installation is complete",
"Congratulation! Welcome to EspoCRM": "Congratulation! EspoCRM has been successfully installed.",
"More Information": "For more information, please visit our {BLOG}, follow us on {TWITTER}.<br><br>If you have any suggestions or questions, please ask on the {FORUM}.",
"share": "If you like EspoCRM, share it with your friends. Let them know about this product.",
"blog": "blog",
"twitter": "twitter",
"forum": "forum",
"Installation Guide": "Installation Guide",
"admin": "admin",
"localhost": "localhost",
"port": "3306",
"Locale": "Locale",
"Outbound Email Configuration": "Outbound Email Configuration",
"SMTP": "SMTP",
"Start": "Start",
"Back": "Back",
"Next": "Next",
"Go to EspoCRM": "Go to EspoCRM",
"Re-check": "Re-check",
"Version": "Version",
"Test settings": "Test Connection",
"Database Settings Description": "Enter your MySQL database connection information (hostname, username and password). You can specify the server port for hostname like localhost:3306.",
"Install": "Install",
"SetupConfirmation page title": "System Requirements",
"PHP Configuration": "PHP settings",
"MySQL Configuration": "Database settings",
"Permission Requirements": "Permissions",
"Configuration Instructions": "Configuration Instructions",
"phpVersion": "PHP version",
"requiredMysqlVersion": "MySQL Version",
"requiredMariadbVersion": "MariaDB version",
"requiredPostgresqlVersion": "PostgreSQL version",
"dbHostName": "Host Name",
"dbName": "Database Name",
"dbUserName": "Database User Name",
"OK": "OK",
"Success": "Success",
"Fail": "Fail",
"is recommended": "is recommended",
"extension is missing": "extension is missing",
"Crontab setup instructions": "Without running Scheduled jobs inbound emails, notifications and reminders will not be working. Here you can read {SETUP_INSTRUCTIONS}.",
"Setup instructions": "setup instructions"
},
"fields": {
"Choose your language": "Choose your language",
"Database Name": "Database Name",
"Platform": "Platform",
"Host Name": "Host Name",
"Port": "Port",
"Database User Name": "Database User Name",
"Database User Password": "Database User Password",
"Database driver": "Database driver",
"User Name": "User Name",
"Password": "Password",
"Confirm Password": "Confirm your Password",
"From Address": "From Address",
"From Name": "From Name",
"Is Shared": "Is Shared",
"Date Format": "Date Format",
"Time Format": "Time Format",
"Time Zone": "Time Zone",
"First Day of Week": "First Day of Week",
"Thousand Separator": "Thousand Separator",
"Decimal Mark": "Decimal Mark",
"Default Currency": "Default Currency",
"Currency List": "Currency List",
"Language": "Language",
"smtpServer": "Server",
"smtpPort": "Port",
"smtpAuth": "Auth",
"smtpSecurity": "Security",
"smtpUsername": "Username",
"emailAddress": "Email",
"smtpPassword": "Password"
},
"messages": {
"Bad init Permission": "Permission denied for \"{*}\" directory. Please set 775 for \"{*}\" or just execute this command in the terminal <pre><b>{C}</b></pre> Operation is not permitted? Try this one: {CSU}",
"Some errors occurred!": "Some errors occurred!",
"phpVersion": "Your PHP version is not supported by EspoCRM, please update to PHP {minVersion} at least",
"requiredMysqlVersion": "Your MySQL version is not supported by EspoCRM, please update to MySQL {minVersion} at least",
"requiredMariadbVersion": "Your MariaDB version is not supported by EspoCRM, please update to MariaDB {minVersion} at least",
"The PHP extension was not found...": "PHP Error: Extension <b>{extName}</b> is not found.",
"All Settings correct": "All Settings are correct",
"Failed to connect to database": "Failed to connect to database",
"PHP version": "PHP version",
"You must agree to the license agreement": "You must agree to the license agreement",
"Passwords do not match": "Passwords do not match",
"Enable mod_rewrite in Apache server": "Enable mod_rewrite in Apache server",
"checkWritable error": "checkWritable error",
"applySett error": "applySett error",
"buildDatabase error": "buildDatabase error",
"createUser error": "createUser error",
"checkAjaxPermission error": "checkAjaxPermission error",
"Ajax failed": "An unexpected error occurred",
"Cannot create user": "Cannot create a user",
"Permission denied": "Permission denied",
"permissionInstruction": "<br>Run this command in Terminal:<pre><b>\"{C}\"</b></pre>",
"operationNotPermitted" : "Operation is not permitted? Try this one: <br><br>{CSU}",
"Permission denied to": "Permission denied",
"Can not save settings": "Can not save settings",
"Cannot save preferences": "Cannot save preferences",
"Thousand Separator and Decimal Mark equal": "Thousand Separator and Decimal Mark cannot be equal",
"1049": "Unknown database",
"2005": "Unknown MySQL server host",
"1045": "Access denied for the user",
"extension": "{0} extension is missing",
"option": "Recommended value is {0}",
"mysqlSettingError": "EspoCRM requires the MySQL setting \"{NAME}\" to be set to {VALUE}"
},
"options": {
"db driver": {
"mysqli": "MySQLi",
"pdo_mysql": "PDO MySQL"
},
"modRewriteTitle": {
"apache": "<h3>API Error: EspoCRM API is unavailable.</h3><br>Do only necessary steps. After each step check if the issue is solved.",
"nginx": "<h3>API Error: EspoCRM API is unavailable.</h3>",
"microsoft-iis": "<h3>API Error: EspoCRM API is unavailable.</h3><br> Possible problem: disabled \"URL Rewrite\". Please check and enable \"URL Rewrite\" Module in IIS server",
"default": "<h3>API Error: EspoCRM API is unavailable.</h3><br> Possible problems: disabled Rewrite Module. Please check and enable Rewrite Module in your server (e.g. mod_rewrite in Apache) and .htaccess support."
},
"modRewriteInstruction": {
"apache": {
"linux": "<br><br><h4>1. Enable \"mod_rewrite\".</h4>To enable <i>mod_rewrite</i>, run these commands in a terminal:<br><br><pre>{APACHE1}</pre><hr><h4>2. If the previous step did not help, try to enable .htaccess support.</h4> Add/edit the server configuration settings <code>{APACHE2_PATH1}</code> or <code>{APACHE2_PATH2}</code> (or <code>{APACHE2_PATH3}</code>):<br><br><pre>{APACHE2}</pre>\n Afterwards run this command in a terminal:<br><br><pre>{APACHE3}</pre><hr><h4>3. If the previous step did not help, try to add the RewriteBase path.</h4>Open a file <code>{API_PATH}.htaccess</code> and replace the following line:<br><br><pre>{APACHE4}</pre>To<br><br><pre>{APACHE5}</pre><hr>For more information please visit the guideline <a href=\"{APACHE_LINK}\" target=\"_blank\">Apache server configuration for EspoCRM</a>.<br><br>",
"windows": "<br><br> <h4>1. Find the httpd.conf file.</h4>Usually it can be found in a folder called \"conf\", \"config\" or something along those lines.<br><br><h4>2. Edit the httpd.conf file.</h4> Inside the httpd.conf file uncomment the line <code>{WINDOWS_APACHE1}</code> (remove the pound '#' sign from in front of the line).<br><br><h4>3. Check others parameters.</h4>Also check if the line <code>ClearModuleList</code> is uncommented and make sure that the line <code>AddModule mod_rewrite.c</code> is not commented out.\n"
},
"nginx": {
"linux": "<br> Add this code to your Nginx server config file <code>{NGINX_PATH}</code> inside \"server\" section:<br><br><pre>{NGINX}</pre> <br> For more information please visit the guideline <a href=\"{NGINX_LINK}\" target=\"_blank\">Nginx server configuration for EspoCRM</a>.<br><br>"
},
"microsoft-iis": {
"windows": ""
}
}
},
"systemRequirements": {
"requiredPhpVersion": "PHP Version",
"requiredMysqlVersion": "MySQL Version",
"requiredMariadbVersion": "MariaDB version",
"host": "Host Name",
"dbname": "Database Name",
"user": "User Name",
"writable": "Writable",
"readable": "Readable"
}
}

View File

@@ -0,0 +1,143 @@
{
"labels": {
"Main page title": "Bienvenido a EspoCRM en Español",
"Start page title": "Contrato de licencia",
"Step1 page title": "Contrato de licencia",
"License Agreement": "Contrato de licencia",
"I accept the agreement": "Acepto el contrato",
"Step2 page title": "Configuración de la Base de Datos",
"Step3 page title": "Configuración de administrador",
"Step4 page title": "Ajustes del sistema",
"Step5 page title": "Ajustes SMTP para los correos salientes",
"Errors page title": "Errores",
"Finish page title": "La instalación ha finalizado",
"Congratulation! Welcome to EspoCRM": "¡Felicitaciones! EspoCRM (en Español) se ha instalado correctamente.",
"More Information": "Para más información, por favor visite nuestro {BLOG} y síguenos en {TWITTER}.<br><br>Si tienes alguna sugerencia o pregunta, por favor realízala en el {FORUM}.",
"share": "Si te gusta EspoCRM, compartelo con tus amigos. Deja que sepan de este genial producto.",
"forum": "foro",
"Installation Guide": "Guía de instalación",
"Locale": "Localización",
"Outbound Email Configuration": "Ajustes de correo saliente",
"Start": "Comenzar",
"Back": "Anterior",
"Next": "Siguiente",
"Go to EspoCRM": "Ir a EspoCRM en Español",
"Re-check": "Revisar otra vez",
"Version": "Versión",
"Test settings": "Probar conexión",
"Database Settings Description": "Ingresa la información de conexión a tu Base de Datos MySQL (servidor, usuario y contraseña). Puedes especificar el puerto del servidor por ejemplo localhost:3306.",
"Install": "Instalar",
"Configuration Instructions": "Instrucciones de Configuración",
"phpVersion": "Versión PHP",
"dbHostName": "Servidor (usualmente localhost)",
"dbName": "Nombre de la Base de Datos",
"dbUserName": "Usuario de la Base de Datos",
"SetupConfirmation page title": "Requerimientos del Sistema",
"PHP Configuration": "Configuración PHP",
"MySQL Configuration": "Configuraciones de base de datos",
"Permission Requirements": "Permisos",
"Success": "Éxito",
"Fail": "Falló",
"is recommended": "¿Es recomendado?",
"extension is missing": "falta la extensión",
"headerTitle": "Instalación de EspoCRM",
"Crontab setup instructions": "Sin ejecutar trabajos programados, los correos entrantes, las notificaciones y los recordatorios no funcionarán. Aquí puede leer {SETUP_INSTRUCTIONS}.",
"Setup instructions": "instrucciones de configuración",
"requiredMysqlVersion": "Versión de MySQL",
"requiredMariadbVersion": "Versión de MariaDB",
"requiredPostgresqlVersion": "Versión de PostgreSQL"
},
"fields": {
"Choose your language": "Seleccione su idioma",
"Database Name": "Nombre de la Base de Datos",
"Host Name": "Servidor (usualmente localhost)",
"Port": "Puerto",
"smtpPort": "Puerto",
"Database User Name": "Usuario de la Base de Datos",
"Database User Password": "Contraseña de la Base de Datos",
"Database driver": "Controlador de base de datos",
"User Name": "Nombre de usuario",
"Password": "Contraseña",
"smtpPassword": "Contraseña",
"Confirm Password": "Confirme su contraseña",
"From Address": "De (email)",
"From Name": "De (nombre):",
"Is Shared": "¿Es compartido?",
"Date Format": "Formato de fecha",
"Time Format": "Formato de hora",
"Time Zone": "Zona horaria",
"First Day of Week": "Primer día de la semana",
"Thousand Separator": "Separador de miles",
"Decimal Mark": "Separador decimal",
"Default Currency": "Moneda por defecto",
"Currency List": "Lista de monedas",
"Language": "Idioma",
"smtpServer": "Servidor",
"smtpAuth": "¿Requiere autenticación?",
"smtpSecurity": "Seguridad",
"smtpUsername": "Nombre de usuario",
"emailAddress": "Correo",
"Platform": "Plataforma"
},
"messages": {
"1045": "Acceso denegado para el usuario",
"1049": "Base de Datos Desconocida",
"2005": "Servidor MySQL Desconocido",
"Some errors occurred!": "¡Algunos errores ocurrieron!",
"phpVersion": "Su versión de PHP no está soportada por EspoCRM,por favor actualizar a PHP{minVersion} por lo menos",
"requiredMysqlVersion": "Su versión de MySQL no está soportada por EspoCRM,por favor actualizar a MySQL{minVersion} por lo menos",
"The PHP extension was not found...": "PHP Error: Extensión <b>{extName}</b> no encontrada.",
"All Settings correct": "Todas los ajustes son correctos",
"Failed to connect to database": "Fallo al conectar a la base de datos",
"PHP version": "Versión PHP",
"You must agree to the license agreement": "Usted debe aceptar el acuerdo de licencia",
"Passwords do not match": "Contraseñas no Coinciden",
"Enable mod_rewrite in Apache server": "Activar mod_rewrite en servidor Apache",
"checkWritable error": "Error al comprobar los permisos de escritura",
"applySett error": "Error al aplicar los ajustes",
"buildDatabase error": "Error al construir la base de datos",
"createUser error": "Error al crear el usuario",
"checkAjaxPermission error": "Error al comprobar los permisos de AJAX",
"Cannot create user": "No se puede crear el usuario",
"Permission denied": "Permiso denegado",
"Permission denied to": "Permiso denegado",
"Can not save settings": "No se pueden guardar los ajustes",
"Cannot save preferences": "No se puede grabar preferencias",
"Thousand Separator and Decimal Mark equal": "El separador de miles y el separador decimal no pueden ser iguales",
"extension": "{0} extensión está perdida",
"option": "El valor recomendado es {0}",
"mysqlSettingError": "EspoCRM requiere que la configuración de MySQL \"{NAME}\" sea establecido a {VALUE}",
"requiredMariadbVersion": "EspoCRM no admite su versión de MariaDB, actualice al menos a MariaDB {minVersion}",
"Ajax failed": "Ocurrió un error inesperado",
"Bad init Permission": "Permiso denegado para el directorio \"{*}\". Configure 775 para \"{*}\" o simplemente ejecute este comando en el terminal <pre><b>{C}</b> </pre> ¿No se permite la operación? Pruebe este: {CSU}",
"permissionInstruction": "<br>Ejecute este comando en la Terminal:<pre><b>\"{C}\"</b></pre>",
"operationNotPermitted": "¿La operación no está permitida? Pruebe este: <br><br> {CSU}"
},
"systemRequirements": {
"requiredPhpVersion": "Versión de PHP",
"requiredMysqlVersion": "Versión de MySQL",
"host": "Nombre de host",
"dbname": "Nombre de la Base de Datos",
"user": "Nombre de usuario",
"writable": "Escribible",
"readable": "Legible",
"requiredMariadbVersion": "Version de MariaDB"
},
"options": {
"modRewriteTitle": {
"apache": "<h3>Error de API: La API de EspoCRM no está disponible.</h3><br> Realice solo los pasos necesarios. Después de cada paso, compruebe si el problema se ha solucionado.",
"nginx": "<h3>Error de API: La API de EspoCRM no está disponible.</h3>",
"microsoft-iis": "<h3>Error de API: La API de EspoCRM no está disponible.</h3><br> Posible problema: La \"Reescritura de URL\" está deshabilitada. Verifique y habilite el módulo \"Reescritura de URL\" en el servidor IIS",
"default": "<h3>Error de API: La API de EspoCRM no está disponible.</h3><br> Posibles problemas: Módulo de reescritura deshabilitado. Verifique y habilite el Módulo de reescritura en su servidor (por ejemplo, mod_rewrite en Apache) y la compatibilidad con .htaccess."
},
"modRewriteInstruction": {
"apache": {
"linux": "<br><br><h4>1. Habilite \"mod_rewrite\".</h4>Para habilitar <i>mod_rewrite</i>, ejecute estos comandos en una terminal:<br><br><pre>{APACHE1}</pre><hr><h4>2. Si el paso anterior no funcionó, intente habilitar la compatibilidad con .htaccess.</h4> Agregue o edite la configuración del servidor <code>{APACHE2_PATH1}</code> o <code>{APACHE2_PATH2}</code> (o <code>{APACHE2_PATH3}</code>):<br><br><pre>{APACHE2}</pre>\nDespués, ejecute este comando en una terminal:<br><br><pre>{APACHE3}</pre><hr><h4>3. Si el paso anterior no ayudó, intente agregar la ruta RewriteBase.</h4> Abra un archivo <code>{API_PATH}.htaccess</code> y reemplace la siguiente línea:<br><br><pre>{APACHE4}</pre>Para<br><br><pre>{APACHE5}</pre><hr>Para obtener más información, visite la guía <a href=\"{APACHE_LINK}\" target=\"_blank\">Configuración del servidor Apache para EspoCRM</a>.<br><br>",
"windows": "<br><br><h4>1. Busque el archivo httpd.conf.</h4> Normalmente se encuentra en una carpeta llamada \"conf\", \"config\" o similar.<br><br><h4>2. Edite el archivo httpd.conf.</h4> Dentro del archivo httpd.conf, descomente la línea <code>{WINDOWS_APACHE1}</code> (elimine el signo almohadilla '#' de delante de la línea).<br><br><h4>3. Verifique los demás parámetros.</h4> También verifique que la línea <code>ClearModuleList</code> no esté comentada y asegúrese de que la línea <code>AddModule mod_rewrite.c</code> no esté comentada.\n"
},
"nginx": {
"linux": "<br> Agregue este código al archivo de configuración de su servidor Nginx <code>{NGINX_PATH}</code> dentro de la sección \"server\":<br><br><pre>{NGINX}</pre> <br> Para obtener más información, visite la guía <a href=\"{NGINX_LINK}\" target=\"_blank\">Configuración del servidor Nginx para EspoCRM</a>.<br><br>"
}
}
}
}

View File

@@ -0,0 +1,134 @@
{
"labels": {
"Main page title": "Bienvenido a EspoCRM(México)",
"Start page title": "Contrato de licencia",
"Step1 page title": "Contrato de licencia",
"License Agreement": "Contrato de licencia",
"I accept the agreement": "Acepto el contrato",
"Step2 page title": "Configuración de Base de Datos",
"Step3 page title": "Configuración (Admin)",
"Step4 page title": "Opciones de Sistema",
"Step5 page title": "Configuración SMTP para los correos salientes",
"Errors page title": "Errores",
"Finish page title": "La instalación ha finalizado",
"Congratulation! Welcome to EspoCRM": "¡Felicitaciones! EspoCRM(México) se ha instalado correctamente.",
"More Information": "Para más información, por favor visite nuestro {BLOG} o síganos en {TWITTER}.<br><br>Si tiene alguna pregunta o sugerencia, por favor hágala en el {FORUM}. ",
"share": "Si te gusta EspoCRM, coméntalo con tus amigos, para que conozcan los beneficios que les ofrece este sistema.",
"forum": "foro",
"Installation Guide": "Guía de instalación",
"Locale": "Localización",
"Outbound Email Configuration": "Configuración de Correo Saliente",
"Start": "Comenzar",
"Back": "Anterior",
"Next": "Siguiente",
"Go to EspoCRM": "Ir a EspoCRM(México)",
"Re-check": "Revisar otra vez",
"Test settings": "Probar conexión",
"Database Settings Description": "Ingresa la información de conexión a tu Base de Datos MySQL (nombre del host, usuario y contraseña). Puedes especificar el puerto del servidor por ejemplo localhost:3306.",
"Install": "Instalar",
"Configuration Instructions": "Instrucciones de Configuración",
"phpVersion": "Versión PHP",
"requiredMysqlVersion": "Versión MySQL",
"dbHostName": "Servidor usualmente(localhost)",
"dbName": "Nombre de la Base de Datos",
"dbUserName": "Usuario de la Base de Datos",
"SetupConfirmation page title": "Requerimientos del Sistema",
"PHP Configuration": "Configuración PHP",
"MySQL Configuration": "Configuración de la Base de Datos",
"Permission Requirements": "Permisos",
"Success": "Correcto",
"Fail": "Falló",
"is recommended": "es recomendado",
"extension is missing": "falta la extensión"
},
"fields": {
"Choose your language": "Seleccione su idioma",
"Database Name": "Nombre de la Base de Datos",
"Host Name": "Servidor usualmente(localhost)",
"Port": "Puerto",
"smtpPort": "Puerto",
"Database User Name": "Usuario de la Base de Datos",
"Database User Password": "Contraseña de la Base de Datos",
"Database driver": "Controlador de base de datos",
"User Name": "Nombre Usuario",
"Password": "Contraseña",
"smtpPassword": "Contraseña",
"Confirm Password": "Confirme su contraseña",
"From Address": "De la dirección",
"From Name": "De Nombre",
"Is Shared": "Es Compartido",
"Date Format": "Formato de fecha",
"Time Format": "Formato de tiempo",
"Time Zone": "Zona Horaria",
"First Day of Week": "Primer día de la semana",
"Thousand Separator": "Separador de miles",
"Decimal Mark": "Separador decimal",
"Default Currency": "Moneda Default",
"Currency List": "Lista de Moneda",
"Language": "Idioma",
"smtpServer": "Servidor",
"smtpAuth": "Autorizar",
"smtpSecurity": "Seguridad",
"smtpUsername": "Nombre de Usuario",
"emailAddress": "Correo electrónico"
},
"messages": {
"1045": "Acceso denegado al usuario",
"1049": "Base de Datos Desconocida",
"2005": "Servidor MySQL Desconocido",
"Bad init Permission": "Permiso denegado para directorio \"{*}\". Por favor establecer 775 para \"{*}\" o solo ejecute este comando en la terminal <pre><b>{C}</b></pre>\n\t¿Operacion no permitida? Intenta esta otra: {CSU}",
"Some errors occurred!": "¡Hubo algún error!",
"phpVersion": "Su versión de PHP no está soportada por EspoCRM,por favor actualizar a PHP{minVersion} por lo menos",
"requiredMysqlVersion": "Su versión de MySQL no está soportada por EspoCRM,por favor actualizar a MySQL{minVersion} por lo menos",
"The PHP extension was not found...": "PHP Error: Extensión <b>{extName}</b> no encontrada.",
"All Settings correct": "Todas las configuraciones son correctas",
"Failed to connect to database": "Fallo al conectar a la base de datos",
"PHP version": "Versión PHP",
"You must agree to the license agreement": "Usted debe aceptar el acuerdo de licencia",
"Passwords do not match": "Contraseñas no Coinciden",
"Enable mod_rewrite in Apache server": "Activar mod_rewrite en servidor Apache",
"checkWritable error": "Error en <b>checkWritable</b>",
"applySett error": "Error en <b>applySett</b>",
"buildDatabase error": "Error en <b>buildDatabase</b>",
"createUser error": "Error al Crear Usuario",
"checkAjaxPermission error": "Error en <b>checkAjaxPermission</b>",
"Cannot create user": "No puede crear un Usuario",
"Permission denied": "Permiso denegado",
"Permission denied to": "Permiso denegado",
"permissionInstruction": "<br>Ejecutar esto en terminal<pre><b>\"{C}\"</b></pre>",
"operationNotPermitted": "¿Operacion no permitida? Intenta Esto: <br>{CSU}",
"Can not save settings": "No se puede grabar configuración",
"Cannot save preferences": "No se puede grabar preferencias",
"Thousand Separator and Decimal Mark equal": "El separador de miles y el separador decimal no pueden ser iguales",
"extension": "{0} la extensión se ha perdido",
"option": "El valor recomendado es {0}",
"mysqlSettingError": "EspoCRM requiere que la configuración de MySQL \"{NAME}\" sea establecido a {VALUE}",
"Ajax failed": "Ha ocurrido un error inesperado"
},
"options": {
"modRewriteInstruction": {
"apache": {
"windows": "<br> <pre>1. Encontrar el archivo httpd.conf (generalmente lo encontrará en una carpeta llamada conf, config o o algo similar a esas dis líneas)<br>\n2. Dentro del archivo httpd.conf descomentamos la línea <code>{WINDOWS_APACHE1}</code> (eliminar el '#' que está al comienzo de la línea)<br>\n3. También encuentre que la línea ClearModuleList no esté comentada después busque y asegurese que la línea AddModule mod_rewrite.c no está comentada tampoco.\n</pre>",
"linux": "<br><br>1. Permita \"mod_rewrite\". Para hacerlo, ejecute estos comandos en una sesión de Terminal:<pre>{APACHE1}</pre><br>2. Permita soporte .htaccess Agregue/edite la configuración del servidor (<code>{APACHE2_PATH1}</code>, <code>{APACHE2_PATH2}</code>, <code>{APACHE2_PATH3}</code>):<pre>{APACHE2}</pre>\n Después de correr esto en una sesión de Terminal:<pre>{APACHE3}</pre><br>3. Trate de agregar la ruta RewriteBase, abra el archivo {API_PATH}.htaccess y reemplace la línea:<pre>{APACHE4}</pre> por <pre>{APACHE5}</pre><br> Para más información, vea la guía <a href=\"{APACHE_LINK}\" target=\"_blank\">Apache server configuration for EspoCRM (en inglés)</a>.<br><br>"
},
"nginx": {
"linux": "<br> Añada este código al archivo de configuración de su servidor Nginx <code>{NGINX_PATH}</code> en la sección \"server\": \n<pre>\n{NGINX}\n</pre> <br> Para obtener más información, vea la guía <a href=\"{NGINX_LINK}\" target=\"_blank\">Nginx server configuration for EspoCRM (en inglés)</a>.<br><br>"
}
},
"modRewriteTitle": {
"apache": "<h3>API Error: EspoCRM API is unavailable.</h3><br>Avance paso por paso. Después de cada paso, verifique si resolvió su problema. ",
"nginx": "<h3>API Error: EspoCRM API is unavailable.</h3>",
"microsoft-iis": "<h3>API Error: EspoCRM API is unavailable.</h3><br> Posible problema: \"URL Rewrite\" deshabilitado. Verifique y active el módulo \"URL Rewrite\" en su servidor IIS",
"default": "<h3>API Error: EspoCRM API is unavailable.</h3><br> Posible problema: Módulo Rewrite deshabilitado. Verifique y Active el Módulo Rewrite en su servidor (e.g. mod_rewrite en Apache) y el soporte .htaccess. "
}
},
"systemRequirements": {
"requiredPhpVersion": "Versión PHP",
"requiredMysqlVersion": "Versión MySQL",
"host": "Nombre del Hospedaje",
"dbname": "Nombre de la Base de Datos",
"user": "Nombre del Usuario",
"writable": "Permite grabar",
"readable": "Permite leer"
}
}

View File

@@ -0,0 +1,116 @@
{
"labels": {
"Main page title": "به EspoCRM خوش آمدید",
"Start page title": "توافقنامه مجوز",
"Step1 page title": "توافقنامه مجوز",
"License Agreement": "توافقنامه مجوز",
"I accept the agreement": "توافق را می پذیرم",
"Step2 page title": "پیکربندی پایگاه داده",
"Step4 page title": "تنظیمات سیستم",
"Step5 page title": "تنظیمات SMTP برای ایمیل های خروجی",
"Errors page title": "خطاها",
"Finish page title": "نصب کامل است",
"Congratulation! Welcome to EspoCRM": "تبریک! EspoCRM با موفقیت نصب شده است.",
"More Information": "برای کسب اطلاعات بیشتر، لطفا از {BLOG} ما دیدن کنید، در {TWITTER} ما را دنبال کنید. <br> <br> اگر پیشنهادات یا سؤالات دارید، لطفا در {FORUM} بخوانید.",
"share": "اگر شما EspoCRM را دوست دارید، آن را با دوستان خود به اشتراک بگذارید. اجازه دهید آنها را در مورد این محصول بدانند.",
"blog": "بلاگ",
"twitter": "توییتر",
"forum": "انجمن",
"Installation Guide": "راهنمای نصب",
"admin": "ادمین",
"Locale": "محلی",
"Outbound Email Configuration": "پیکربندی ایمیل خروجی",
"Start": "شروع",
"Back": "بازگشت",
"Next": "بعدی",
"Go to EspoCRM": "برو به EspoCRM",
"Re-check": "بررسی مجدد",
"Version": "ورژن",
"Test settings": "اتصال تست",
"Database Settings Description": "اطلاعات مربوط به اتصال پایگاه داده MySQL (نام میزبان، نام کاربری و رمز عبور) را وارد کنید. شما می توانید پورت سرور برای نام میزبان را مانند localhost: 3306 مشخص کنید.",
"Install": "نصب",
"Configuration Instructions": "دستورالعمل پیکربندی",
"phpVersion": "ورژنPHP ",
"requiredMysqlVersion": "ورژن MySQL",
"dbHostName": "نام هاست",
"dbName": "نام پایگاه داده",
"dbUserName": "نام کاربری پایگاه داده",
"OK": "تایید",
"SetupConfirmation page title": "سیستم مورد نیاز",
"PHP Configuration": "تنظیمات پی اچ پی",
"MySQL Configuration": "تنظیمات بانک اطلاعاتی",
"Permission Requirements": "مجوزها",
"Success": "موفقیت",
"Fail": "شکست",
"is recommended": "توصیه می شود"
},
"fields": {
"Choose your language": "زبان خود را انتخاب کنید",
"Database Name": "نام پایگاه داده",
"Host Name": "نام هاست",
"Port": "پورت",
"smtpPort": "پورت",
"Database User Name": "نام کاربری پایگاه داده",
"Database User Password": "رمز عبور کاربر بانک اطلاعاتی",
"Database driver": "راه انداز بانک اطلاعاتی",
"User Name": "نام کاربری",
"Password": "کلمه عبور",
"smtpPassword": "کلمه عبور",
"Confirm Password": "رمز عبور خود را تأیید کنید",
"From Address": "از آدرس",
"From Name": "از نام",
"Is Shared": "به اشتراک گذاشته شده است",
"Date Format": "فرمت تاریخ",
"Time Format": "فرمت زمان",
"Time Zone": "منطقه زمانی",
"First Day of Week": "اولین روز هفته",
"Default Currency": "ارز پیش فرض",
"Currency List": "فهرست ارز",
"Language": "زبان",
"smtpServer": "سرور",
"smtpSecurity": "امنیت",
"smtpUsername": "نام کاربری",
"emailAddress": "ایمیل"
},
"messages": {
"1045": "دسترسی برای کاربر غیرقانونی است",
"1049": "پایگاه داده ناشناخته",
"2005": "هاست سرور نامشخص MySQL",
"Some errors occurred!": "برخی از خطاها رخ داده است!",
"phpVersion": "نسخه PHP شما توسط EspoCRM پشتیبانی نمی شود، لطفا حداقل به {PHP {minVersion ارتقا دهید",
"requiredMysqlVersion": "نسخه MySQL شما توسط EspoCRM پشتیبانی نمی شود، لطفا حداقل به {MySQL {minVersion ارتقا دهید",
"The PHP extension was not found...": "خطایPHP: افزونه <b> {extName} </ b> یافت نشد.",
"All Settings correct": "تمام تنظیمات درست است",
"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 را در سرور آپاچی فعال کنید",
"Cannot create user": "عدم امکان ایجاد کاربر",
"Permission denied": "عدم دسترسی",
"Permission denied to": "عدم دسترسی",
"Can not save settings": "تنظیمات قابل ذخیره نیستند",
"Cannot save preferences": "اولویت‌ها قابل ذخیره نیستند",
"option": "مقدار پیشنهادی {0} است"
},
"options": {
"modRewriteTitle": {
"apache": "خطای API: EspoCRM API در دسترس نیست. <br> مشکلات احتمالی: \"mod_rewrite\" را در سرور آپاچی غیرفعال کنید، پشتیبانی از .htaccess یا RewriteBase غیرفعال شده است. <br> تنها مراحل لازم را انجام دهید. بعد از هر مرحله چک کنید اگر مسئله حل شود.",
"nginx": "خطای API: EspoCRM API در دسترس نیست.",
"microsoft-iis": "خطای API: EspoCRM API در دسترس نیست. <br> مشکل : غیرفعال \"URL Rewrite\". لطفا ماژول URL Rewrite را در سرور IIS چک کنید و فعال کنید",
"default": "خطای API: EspoCRM API در دسترس نیست. <br> مشکل احتمالی: غیر فعال بودن ماژول Rewrite. لطفا ماژولRewrite را در سرور خود چک کنید و فعال کنید (به عنوان مثال mod_rewrite در Apache) و پشتیبانی از .htaccess."
},
"modRewriteInstruction": {
"apache": {
"linux": "<br> <br> 1. فعال کردن \"mod_rewrite\" برای انجام آن دستوراتی که در ترمینال اجرا می شود: <pre>{APACHE1}</pre> <br> 2. پشتیبانی از .htaccess را فعال کنید افزودن / ویرایش تنظیمات پیکربندی سرور (<code>{APACHE2_PATH1}</code>, <code>{APACHE2_PATH2}</code>, <code>{APACHE2_PATH3}</code>): <pre>{APACHE2}</pre>\n  بعد از اجرای این دستور در ترمینال: <pre>{APACHE3}</pre> <br> 3. سعی کنید مسیر RewriteBase را اضافه کنید، فایل {API_PATH} .htaccess را باز کنید و خط زیر را جایگزین کنید: <pre>{APACHE4}</pre> برای <pre> {APACHE5} </pre> <br> برای اطلاعات بیشتر لطفا دستورالعمل <a href=\"{APACHE_LINK}\" target=\"_blank\"> پیکربندی سرور Apache برای EspoCRM </a>. <br> <br>"
},
"nginx": {
"linux": "<br><br> این کد را به فایل پیکربندی سرور Nginx خود اضافه کنید <code>{NGINX_PATH}</code> در داخل «سرور»:\n<pre>\n{NGINX}\n</pre> <br> برای کسب اطلاعات بیشتر، از دستورالعمل <a href=\"{NGINX_LINK}\" target=\"_blank\"> پیکربندی سرور Nginx برای EspoCRM <br> <br> <br> <br>"
}
}
},
"systemRequirements": {
"dbname": "نام پایگاه داده",
"user": "نام کاربری"
}
}

View File

@@ -0,0 +1,132 @@
{
"labels": {
"Main page title": "Bienvenue sur EspoCRM",
"Start page title": "Accord de Licence",
"Step1 page title": "Accord de Licence",
"License Agreement": "Accord de Licence",
"I accept the agreement": "J'accepte l'accord de Licence",
"Step2 page title": "Configuration de la base de données",
"Step3 page title": "Configuration de l'Administrateur",
"Step4 page title": "Paramètres du système",
"Step5 page title": "Paramètres SMTP pour envoyer les emails",
"Errors page title": "Erreurs",
"Finish page title": "L'installation est terminée",
"Congratulation! Welcome to EspoCRM": "Félicitation! EspoCRM a été installé avec succès.",
"share": "Si vous appréciez EspoCRM, partagez le avec vos amis. Faites leur connaître le produit",
"Installation Guide": "Instructions d'installation",
"Locale": "Région",
"Outbound Email Configuration": "Configuration de l'envoi d'email",
"Start": "Lancement",
"Back": "Retour",
"Next": "Suivant",
"Go to EspoCRM": "Aller vers EspoCRM",
"Re-check": "Revérifier",
"Test settings": "Tester la connexion",
"Database Settings Description": "Entrez vos informations de connexion à la base MYSQL (nom d'hôte, nom d'utilisateur et mot de passe). Vous pouvez spécifier le port serveur pour le nom d'hôte comme localhost:3306.",
"Install": "Installation",
"Configuration Instructions": "Instructions de configuration",
"phpVersion": "Version PHP",
"dbHostName": "Nom d'hôte",
"dbName": "Nom de la base de donnée",
"dbUserName": "Nom d'utilisateur de la base de données",
"SetupConfirmation page title": "Configuration requise",
"PHP Configuration": "Paramètres PHP",
"MySQL Configuration": "Paramètres de base de données",
"Permission Requirements": "Les permissions",
"Success": "Succès",
"Fail": "Échouer",
"is recommended": "est recommandé",
"extension is missing": "l'extension est manquante",
"headerTitle": "Installation EspoCRM",
"Crontab setup instructions": "Sans exécuter les e-mails entrants des travaux planifiés, les notifications et les rappels ne fonctionneront pas. Ici vous pouvez lire {SETUP_INSTRUCTIONS}.",
"Setup instructions": "instructions d'installation",
"requiredMysqlVersion": "Version MySQL",
"requiredMariadbVersion": "Version MariaDB",
"requiredPostgresqlVersion": "Version PostgreSQL"
},
"fields": {
"Choose your language": "Choisissez votre langue",
"Database Name": "Nom de la base de données",
"Host Name": "Nom d'hôte",
"Database User Name": "Nom d'utilisateur de la base de données",
"Database User Password": "Mot de passe pour l'utilisateur de la base de données",
"Database driver": "Pilote de base de données",
"User Name": "Nom d'utilisateur",
"Password": "Mot de passe",
"smtpPassword": "Mot de passe",
"Confirm Password": "Confirmer le mot de passe",
"From Address": "Adresse de lémetteur",
"From Name": "Nom de l'expéditeur",
"Is Shared": "Est partagé",
"Date Format": "Format de date",
"Time Format": "Format de l'heure",
"Time Zone": "Fuseau horaire",
"First Day of Week": "Premier jour de la semaine",
"Thousand Separator": "Séparateur de milliers",
"Decimal Mark": "Marqueur décimal",
"Default Currency": "Monnaie courante",
"Currency List": "Liste des monnaies",
"Language": "Langue",
"smtpServer": "Serveur",
"smtpAuth": "Autorisation",
"smtpSecurity": "Sécurité",
"smtpUsername": "Nom d'utilisateur",
"Platform": "Plateforme"
},
"messages": {
"1049": "Base de donnée inconnue",
"2005": "Hôte du server MYSQL est inconnu",
"Some errors occurred!": "Des erreurs se sont produites !",
"The PHP extension was not found...": "L'extension PHP <b>{extName}</b> est introuvable...",
"All Settings correct": "Les Paramètres sont corrects",
"Failed to connect to database": "Impossible de connecter la base de donnée",
"PHP version": "Version PHP",
"You must agree to the license agreement": "Vous devez agréer l'accord de licence",
"Passwords do not match": "Les mots de passes sont différents",
"Enable mod_rewrite in Apache server": "Activer mod_rewrite sur le serveur Apache",
"checkWritable error": "Erreur de vérification d'écriture",
"applySett error": "Erreur applySett",
"buildDatabase error": "Erreur dans la construction de la base de donnée",
"createUser error": "Erreur dans la création de l'utilisateur",
"checkAjaxPermission error": "Erreur checkAjaxPermission",
"Cannot create user": "Impossible de créer l'utilisateur",
"Permission denied": "Permission refusée",
"Permission denied to": "Permission refusée",
"Can not save settings": "Impossible d'enregistrer les paramètres",
"Cannot save preferences": "Impossible d'enregistrer les préférences",
"extension": "l'extension {0} est manquante",
"option": "la valeur recommandée est {0}",
"requiredMariadbVersion": "Votre version de MariaDB nest pas supportée par EspoCRM, veuillez mettre à jour au moins vers MariaDB {minVersion}",
"Ajax failed": "une erreur inattendue est apparue",
"Bad init Permission": "Autorisation refusée pour le répertoire \\ \"{*} \". Veuillez définir 77 \"pour \" {*} \\ \"ou simplement exécuter cette commande dans le terminal <pre> <b> {C} </ b> </ pre> L'opération n'est pas autorisée? Essayez celui-ci: {CSU}",
"permissionInstruction": "<br> Exécutez cette commande dans le terminal: <pre> <b> \\ \"{C} \" </ b> </ pre>",
"operationNotPermitted": "L'opération n'est pas autorisée? Essayez celui-ci: <br> <br> {CSU}"
},
"systemRequirements": {
"requiredPhpVersion": "Version PHP",
"requiredMysqlVersion": "Version MySQL",
"host": "Nom d'hôte",
"dbname": "Nom de la base de données",
"user": "Nom d'utilisateur",
"writable": "Enregistrable",
"readable": "Lisible",
"requiredMariadbVersion": "Version de MariaDB"
},
"options": {
"modRewriteTitle": {
"apache": "<h3>Erreur API : l'API EspoCRM n'est pas disponible.</h3><br>Effectuez uniquement les étapes nécessaires. Après chaque étape, vérifiez si le problème est résolu.",
"nginx": "<h3>Erreur API : EspoCRM API est indisponible.</h3>",
"microsoft-iis": "<h3>Erreur API : l'API EspoCRM n'est pas disponible.</h3><br> Problème possible : \"URL Rewrite\" désactivée. Veuillez vérifier et activer le module \"URL Rewrite\" sur le serveur IIS.",
"default": "\n<h3>Erreur API : l'API EspoCRM n'est pas disponible.</h3><br> Problèmes possibles : module Rewrite désactivé. Veuillez vérifier et activer le module Rewrite sur votre serveur (par exemple mod_rewrite dans Apache) et la prise en charge .htaccess."
},
"modRewriteInstruction": {
"apache": {
"linux": "<br><br><h4>1. Activez « mod_rewrite ».</h4>Pour activer <i>mod_rewrite</i>, exécutez les commandes suivantes dans un terminal:<br><br><pre>{APACHE1}</pre><hr><h4>2. Si l'étape précédente ne vous a pas aidé, essayez d'activer la prise en charge du . htaccess.</h4> Ajoutez/modifiez les paramètres de configuration du serveur <code>{APACHE2_PATH1}</code> ou <code>{APACHE2_PATH2}</code> (ou <code>{APACHE2_PATH3}</code>):<br><br><pre>{APACHE2}</pre>\n Ensuite, exécutez cette commande dans un terminal:<br><br><pre>{APACHE3}</pre><hr><h4>3. Si l'étape précédente n'a pas aidé, essayez d'ajouter le chemin RewriteBase.</h4>Ouvrez un fichier <code>{API_PATH}. htaccess</code> et remplacez la ligne suivante:<br><br><pre>{APACHE4}</pre>A<br><br><pre>{APACHE5}</pre><hr>Pour plus d'informations, veuillez consulter la ligne directrice <a href=« {APACHE_LINK} » target=« _blank »>Configuration du serveur Apache pour EspoCRM</a>.<br><br>",
"windows": "<br><br> <h4>1. Trouvez le fichier httpd.conf.</h4>En général, il se trouve dans un dossier appelé « conf », « config » ou quelque chose de ce genre.<br><br><h4>2. Editez le fichier httpd.conf.</h4> Dans le fichier httpd.conf, décommentez la ligne <code>{WINDOWS_APACHE1}</code> (supprimez le signe dièse '#' devant la ligne). 3. <br><br><h4>3. vérifiez les autres paramètres.</h4>Vérifiez également si la ligne <code>ClearModuleList</code> est décommentée et assurez-vous que la ligne <code>AddModule mod_rewrite.c</code> n'est pas commentée."
},
"nginx": {
"linux": "<br>Ajouter ce code à votre fichier de configuration du serveur Nginx <code>{NGINX_PATH}</code> dans la section « server »:<br><br><pre>{NGINX}</pre> <br>Pour plus d'informations, veuillez consulter le guide <a href=« {NGINX_LINK} » target=« _blank »>configuration du serveur Nginx pour EspoCRM</a>.<br><br>"
}
}
}
}

View File

@@ -0,0 +1,120 @@
{
"labels": {
"Main page title": "Dobrodošli u EspoCRM",
"Start page title": "Ugovor o licenci",
"Step1 page title": "Ugovor o licenci",
"License Agreement": "Ugovor o licenci",
"I accept the agreement": "Suglasan sam",
"Step2 page title": "Konfiguracija baze podataka",
"Step3 page title": "Administrator postavke",
"Step4 page title": "Postavke sustava",
"Step5 page title": "SMTP postavke za odlaznu e-poštu",
"Errors page title": "Greške",
"Finish page title": "Instalacija je završena",
"Congratulation! Welcome to EspoCRM": "Čestitamo! EspoCRM je uspješno instaliran.",
"More Information": "Za više informacija, posjetite naš {BLOG}, pratite nas na {TWITTER}. <br><br> Ukoliko imate bilo kakve prijedloge ili pitanja, obratite se na {FORUM}.",
"share": "Ako vam se sviđa EspoCRM, preporučite ga prijateljima.",
"Installation Guide": "Upute za instalaciju",
"Locale": "Lokal",
"Outbound Email Configuration": "Konfiguracija odlazna e-pošte",
"Start": "Početak",
"Back": "Povratak",
"Next": "Slijedeća",
"Go to EspoCRM": "Idi na EspoCRM",
"Re-check": "Ponovna provjera",
"Version": "Verzija",
"Test settings": "Test veze",
"Database Settings Description": "Unesite svoje podatke za MySQL bazu podataka (hostname, korisničko ime i lozinku). Možete odrediti port servera u formi localhost:3306.",
"Install": "Instaliraj",
"Configuration Instructions": "Upute za podešavanja",
"phpVersion": "PHP verzija",
"requiredMysqlVersion": "MySQL verzija",
"dbHostName": "Ime hosta",
"dbName": "Ime baze",
"dbUserName": "Baza Korisničko ime",
"SetupConfirmation page title": "Zahtjevi sustava",
"PHP Configuration": "PHP postavke",
"MySQL Configuration": "Postavke baze podataka",
"Permission Requirements": "Dozvole"
},
"fields": {
"Choose your language": "Izaberite jezik",
"Database Name": "Ime baze",
"Host Name": "Ime hosta",
"Database User Name": "Baza Korisničko ime",
"Database User Password": "Baza podataka lozinka korisnika",
"Database driver": "Driver baze podataka",
"User Name": "Korisničko ime",
"Password": "Lozinka",
"smtpPassword": "Lozinka",
"Confirm Password": "Potvrdite lozinku",
"From Address": "Dolazna adresa",
"From Name": "Od osobe",
"Is Shared": "Se dijeli",
"Date Format": "Format datuma",
"Time Format": "Format vremena",
"Time Zone": "Vremenska zona",
"First Day of Week": "Prvi dan tjedna",
"Thousand Separator": "Oznaka za tisuće",
"Decimal Mark": "Decimalna oznaka",
"Default Currency": "Podrazumijevana valuta",
"Currency List": "Popis valuta",
"Language": "Jezik",
"smtpAuth": "Autorizacija",
"smtpSecurity": "Sigurnost",
"smtpUsername": "Korisničko ime",
"emailAddress": "E-pošta"
},
"messages": {
"1045": "Pristup zabranjen za korisnika",
"1049": "Nepoznata baza podataka",
"2005": "Nepoznat MySQL host servera",
"Some errors occurred!": "Neke greške su se desile!",
"phpVersion": "Vaša PHP verzija nije podržana od strane EspoCRM, molimo nadogradite PHP na najmanje {minVersion}",
"requiredMysqlVersion": "Vaša MySQL verzija nije podržana od strane EspoCRM, molimo nadogradite na najmanje {minVersion}",
"The PHP extension was not found...": "PHP greška: Ekstenzija <b>{extName}</b> nije pronađena.",
"All Settings correct": "Sva podešavanja su ispravna",
"Failed to connect to database": "Neuspjelo povezivanje sa bazom podataka",
"PHP version": "PHP verzija",
"You must agree to the license agreement": "Morate prihvatiti ugovor o licenciranju",
"Passwords do not match": "Lozinke se ne podudaraju",
"Enable mod_rewrite in Apache server": "Omogućite mod_rewrite na Apache serveru",
"checkWritable error": "checkWritable greška",
"applySett error": "applySett greška",
"buildDatabase error": "buildDatabase greška",
"createUser error": "createUser greška",
"checkAjaxPermission error": "checkAjaxPermission greška",
"Cannot create user": "Nemoguće kreiranje korisnika",
"Permission denied": "Dozvola odbijena",
"Permission denied to": "Dozvola odbijena",
"Can not save settings": "Nemoguće spremiti postavke",
"Cannot save preferences": "Nemoguće spremiti postavke",
"Thousand Separator and Decimal Mark equal": "Oznaka tisućica i decimalna oznaka ne mogu biti jednake",
"extension": "{0} nedostaje ekstenzija",
"option": "Preporučena vrijednost je {0}",
"mysqlSettingError": "EspoCRM zahtijeva MySQL parametar \"{NAME}\" da bude {VALUE}"
},
"options": {
"modRewriteInstruction": {
"apache": {
"windows": "<br> <pre>1. Pronađite httpd.conf datoteku (uobičajeno je u direktoriju conf, config ili nešto slično)<br>\n2. Unutar httpd.conf datoteke maknite komentar sa reda <code>{WINDOWS_APACHE1}</code> (maknite '#' znak na početku reda)<br>\n3. Provjerite i da li su ClearModuleList AddModule mod_rewrite.c također bez znaka #.\n</pre>",
"linux": "<br>1.Omogućite \"mod_rewrite\". Da biste to napravili, pokrenite ovaj kod u terminalu:<pre>{APACHE1}</pre><br>2. Omogućite .htaccess podršku. Dodajte/izmijenite postavke servera (<code>{APACHE2_PATH1}</code>, <code>{APACHE2_PATH2}</code>, <code>{APACHE2_PATH3}</code>):<pre>{APACHE2}</pre>\n Nakon toga pokrenite ovaj kod na serveru:<pre>{APACHE3}</pre><br>3. Pokušajte dodati RewriteBase putanju, otvorite datoteku {API_PATH}.htaccess i izmijenite slijedeći red:<pre>{APACHE4}</pre>NA<pre>{APACHE5}</pre><br> Za više informacija posjetite <a href=\"{APACHE_LINK}\" target=\"_blank\">Apache server konfiguraciju za EspoCRM</a>.<br><br>"
},
"nginx": {
"linux": "<br> Dodajte ovaj kod u svoju Nginx config datoteku <code>{NGINX_PATH}</code> unutar \"server\" sekcije:\n<pre>\n{NGINX}\n</pre> <br> Za više informacija posjetite <a href=\"{NGINX_LINK}\" target=\"_blank\">Nginx server konfiguracija za EspoCRM</a>.<br><br>"
}
},
"modRewriteTitle": {
"apache": "<h3>API Greška: EspoCRM API nije dostupan.</h3><br> Učinite samo neophodne izmjene. Poslije svake provjerite da li je problem riješen.",
"nginx": "<h3>API greška: EspoCRM API je dostupan</h3>",
"microsoft-iis": "<h3>API greška: EspoCRM API je dostupan</h3><br> Mogući problem: onemogućen \"URL Rewrite \". Molimo provjerite i omogućite \"URL Rewrite \" modul u IIS serveru",
"default": "<h3>API greška: EspoCRM API je dostupan</h3> <br> Mogući problem: onemogućen Rewrite Module. Molimo provjerite i omogućiti Rewrite Module u vašem serveru (npr mod_rewrite u Apachu) i .htaccess podršku."
}
},
"systemRequirements": {
"requiredMysqlVersion": "MySQL verzija",
"host": "Ime hosta",
"dbname": "Ime baze",
"user": "Korisničko ime"
}
}

View File

@@ -0,0 +1,103 @@
{
"labels": {
"Main page title": "Üdvözöljük az EspoCRM-en",
"Start page title": "Licencszerződés",
"Step1 page title": "Licencszerződés",
"License Agreement": "Licencszerződés",
"I accept the agreement": "elfogadom a megállapodást",
"Step2 page title": "Adatbázis konfiguráció",
"Step3 page title": "Rendszergazda beállítás",
"Step4 page title": "Rendszerbeállítások",
"Step5 page title": "SMTP-beállítások a kimenő e-mailekhez",
"Errors page title": "hibák",
"Finish page title": "A telepítés befejeződött",
"Congratulation! Welcome to EspoCRM": "Gratuláció! Az EspoCRM sikeresen telepítve lett.",
"More Information": "További információért látogasson el a (z) {BLOG} webhelyre, kövesse velünk a (z) {TWITTER} webhelyet. <br> <br> Ha bármilyen javaslata vagy kérdése van, kérdezze meg a (z) {FORUM} fórumot.",
"share": "Ha tetszik az EspoCRM, ossza meg barátaival. Tájékoztasson erről a termékről.",
"forum": "fórum",
"Installation Guide": "Telepítési útmutató",
"localhost": "helyi kiszolgáló",
"Locale": "helyszín",
"Outbound Email Configuration": "Kimenő e-mail konfiguráció",
"Start": "Rajt",
"Back": "Hát",
"Next": "Következő",
"Go to EspoCRM": "Menjen az EspoCRM-be",
"Re-check": "Re-ellenőrzés",
"Version": "Változat",
"Test settings": "Vizsgálati kapcsolat",
"Database Settings Description": "Adja meg a MySQL adatbázis kapcsolati információit (gazdanév, felhasználónév és jelszó). Megadhatja a gazdagép kiszolgáló portját, mint a localhost: 3306.",
"Install": "Telepítés",
"Configuration Instructions": "Konfigurációs utasítások",
"phpVersion": "PHP verzió",
"requiredMysqlVersion": "MySQL verzió",
"dbHostName": "Host név",
"dbName": "Adatbázis név",
"dbUserName": "Adatbázis felhasználónév",
"OK": "rendben",
"Permission Requirements": "Engedélyek"
},
"fields": {
"Choose your language": "Válasszon nyelvet",
"Database Name": "Adatbázis név",
"Host Name": "Host név",
"Port": "Kikötő",
"smtpPort": "Kikötő",
"Database User Name": "Adatbázis felhasználónév",
"Database User Password": "Adatbázis felhasználói jelszó",
"Database driver": "Adatbázis-illesztőprogram",
"User Name": "Felhasználónév",
"Password": "Jelszó",
"smtpPassword": "Jelszó",
"Confirm Password": "Erősítse meg a jelszót",
"From Address": "Címtől",
"From Name": "Névből",
"Is Shared": "Megosztott",
"Date Format": "Dátum formátum",
"Time Format": "Idő formátum",
"Time Zone": "Időzóna",
"First Day of Week": "A hét első napja",
"Thousand Separator": "Ezer elválasztó",
"Decimal Mark": "Tizedesjel",
"Default Currency": "Alapértelmezett pénznem",
"Currency List": "Pénznem listája",
"Language": "Nyelv",
"smtpServer": "szerver",
"smtpSecurity": "Biztonság",
"smtpUsername": "Felhasználónév"
},
"messages": {
"1045": "Hozzáférés megtagadva a felhasználó számára",
"1049": "Ismeretlen adatbázis",
"2005": "Ismeretlen MySQL kiszolgáló állomás",
"Some errors occurred!": "Néhány hiba történt!",
"phpVersion": "PHP-verzióját nem támogatja az EspoCRM, kérjük, frissítse legalább a PHP {minVersion} programot",
"requiredMysqlVersion": "A MySQL verzióját nem támogatja az EspoCRM, kérjük, frissítse legalább a MySQL {minVersion} programot",
"The PHP extension was not found...": "PHP hiba: A kiterjesztés <b> {extName} </b> nem található.",
"All Settings correct": "Minden beállítás helyes",
"Failed to connect to database": "Nem sikerült csatlakozni az adatbázishoz",
"PHP version": "PHP verzió",
"You must agree to the license agreement": "Meg kell állapodnia a licencszerződésben",
"Passwords do not match": "A jelszavak nem egyeznek",
"Enable mod_rewrite in Apache server": "A mod_rewrite engedélyezése az Apache szerveren",
"applySett error": "applySett hiba",
"buildDatabase error": "buildDatabase hiba",
"createUser error": "createUser hiba",
"checkAjaxPermission error": "checkAjaxPermission hiba",
"Cannot create user": "Nem lehet létrehozni egy felhasználót",
"Permission denied": "Hozzáférés megtagadva",
"Permission denied to": "Hozzáférés megtagadva",
"Can not save settings": "A beállítások mentése nem lehetséges",
"Cannot save preferences": "A beállítások mentése nem lehetséges",
"Thousand Separator and Decimal Mark equal": "Ezer elválasztó és decimális jelölés nem lehet egyenlő",
"extension": "{0} kiterjesztés hiányzik",
"option": "A javasolt érték {0}",
"mysqlSettingError": "Az EspoCRM-nek meg kell adnia a (z) \"{NAME}\" MySQL beállítását: {VALUE}"
},
"systemRequirements": {
"requiredMysqlVersion": "MySQL verzió",
"host": "Host név",
"dbname": "Adatbázis név",
"user": "Felhasználónév"
}
}

View File

@@ -0,0 +1,117 @@
{
"labels": {
"Main page title": "Selamat Datang di EspoCRM",
"Start page title": "Perjanjian lisensi",
"Step1 page title": "Perjanjian lisensi",
"License Agreement": "Perjanjian lisensi",
"I accept the agreement": "saya setuju perjanjiannya",
"Step2 page title": "konfigurasi database",
"Step3 page title": "administrator Pengaturan",
"Step4 page title": "Pengaturan sistem",
"Step5 page title": "pengaturan SMTP untuk email keluar",
"Errors page title": "kesalahan",
"Finish page title": "Instalasi selesai",
"Congratulation! Welcome to EspoCRM": "Selamat! EspoCRM telah berhasil diinstal.",
"More Information": "Untuk informasi lebih lanjut, kunjungi {BLOG}, ikuti kami di {TWITTER}. <br> Jika Anda memiliki saran atau pertanyaan, silahkan bertanya pada {FORUM}.",
"share": "Jika Anda suka EspoCRM, berbagi dengan teman-teman Anda. Biarkan mereka tahu tentang produk ini.",
"twitter": "kicau",
"Installation Guide": "Petunjuk pemasangan",
"Locale": "lokal",
"Outbound Email Configuration": "Konfigurasi Email Keluar",
"Start": "Mulai",
"Back": "Kembali",
"Next": "Berikutnya",
"Go to EspoCRM": "Pergi ke EspoCRM",
"Re-check": "Re-cek",
"Version": "Versi",
"Test settings": "Tes koneksi",
"Database Settings Description": "Masukkan informasi koneksi database MySQL Anda (hostname, username dan password). Anda dapat menentukan port server untuk hostname seperti localhost: 3306.",
"Install": "Memasang",
"Configuration Instructions": "Instruksi konfigurasi",
"phpVersion": "versi PHP",
"requiredMysqlVersion": "versi MySQL",
"dbHostName": "Nama host",
"dbName": "Nama database",
"dbUserName": "Database Nama Pengguna",
"OK": "baik",
"Permission Requirements": "Izin"
},
"fields": {
"Choose your language": "Pilih bahasamu",
"Database Name": "Nama database",
"Host Name": "Nama host",
"Port": "Pelabuhan",
"smtpPort": "Pelabuhan",
"Database User Name": "Database Nama Pengguna",
"Database driver": "database driver",
"User Name": "Nama pengguna",
"Password": "Kata sandi",
"smtpPassword": "Kata sandi",
"Confirm Password": "Konfirmasi password Anda",
"From Address": "dari Alamat",
"From Name": "Dari nama",
"Is Shared": "Shared",
"Date Format": "Format tanggal",
"Time Format": "Format waktu",
"Time Zone": "Zona waktu",
"First Day of Week": "Hari Pertama Minggu",
"Thousand Separator": "Pemisah ribuan",
"Decimal Mark": "Tanda desimal",
"Default Currency": "Atur Mata Uang",
"Currency List": "Daftar mata uang",
"Language": "Bahasa",
"smtpAuth": "Tupoksi",
"smtpSecurity": "Keamanan",
"smtpUsername": "Nama pengguna",
"emailAddress": "E-mail"
},
"messages": {
"1045": "akses ditolak untuk pengguna",
"1049": "Database tidak diketahui",
"2005": "Diketahui host server MySQL",
"Some errors occurred!": "Terjadi kesalahan!",
"phpVersion": "Versi PHP Anda tidak didukung oleh EspoCRM, silahkan update ke PHP {minVersion} setidaknya",
"requiredMysqlVersion": "Versi MySQL anda tidak didukung oleh EspoCRM, silahkan update ke MySQL {minVersion} setidaknya",
"The PHP extension was not found...": "PHP error: Ekstensien <b> {extName} </ b> tidak ditemukan.",
"All Settings correct": "Semua Pengaturan benar",
"Failed to connect to database": "Gagal koneksi ke database",
"PHP version": "versi PHP",
"You must agree to the license agreement": "Anda harus menyetujui perjanjian lisensi",
"Passwords do not match": "Sandi tidak cocok",
"Enable mod_rewrite in Apache server": "Aktifkan mod_rewrite di server Apache",
"checkWritable error": "kesalahan checkWritable",
"applySett error": "kesalahan applySett",
"buildDatabase error": "kesalahan buildDatabase",
"createUser error": "kesalahan createUser",
"checkAjaxPermission error": "kesalahan checkAjaxPermission",
"Cannot create user": "Tidak dapat membuat user",
"Permission denied": "Izin ditolak",
"Permission denied to": "Izin ditolak",
"Can not save settings": "tidak bisa menyimpan pengaturan",
"Cannot save preferences": "Tidak dapat menyimpan preferensi",
"Thousand Separator and Decimal Mark equal": "Ribuan Separator dan Decimal Mark tidak bisa sama",
"extension": "{0} ekstensi hilang",
"option": "Nilai yang direkomendasikan adalah {0}",
"mysqlSettingError": "EspoCRM membutuhkan pengaturan MySQL \"{NAME}\" harus ditetapkan untuk {VALUE}"
},
"options": {
"modRewriteInstruction": {
"apache": {
"windows": "Situs <pre> 1. Cari file httpd.conf (biasanya Anda akan menemukannya dalam folder bernama conf, konfigurasi atau sesuatu sepanjang garis) Situs\n2. Di dalam file httpd.conf tanda komentar pada LoadModule baris modul rewrite_module / mod_rewrite.so (menghapus pound '#' tanda dari di garis depan) <br>\n3. Juga menemukan garis ClearModuleList adalah tanda komentar kemudian cari dan pastikan bahwa garis AddModule mod_rewrite.c tidak komentar.\n</ Pre>",
"linux": "<br><br>1. Aktifkan \"mod_rewrite\". Untuk melakukannya menjalankan perintah-perintah dalam Terminal: <pre>{APACHE1}</pre> 2. Mengaktifkan dukungan .htaccess. Tambahkan/edit pengaturan konfigurasi Server (<code>{APACHE2_PATH1}</code>, <code>{APACHE2_PATH2}</code>, <code>{APACHE2_PATH3}</code>): <pre>{APACHE2}</pre>\n Setelah menjalankan perintah ini di Terminal: <pre>{APACHE3}</pre> 3. Cobalah untuk menambahkan jalur RewriteBase, membuka file {API_PATH} .htaccess dan mengganti baris berikut: <pre>{APACHE4}</pre> Untuk <pre>{APACHE5}</pre><br> For more information please visit the guideline <a href=\"{APACHE_LINK}\" target=\"_blank\">Apache server configuration for EspoCRM</a>.<br><br>"
}
},
"modRewriteTitle": {
"apache": "<h3>API Kesalahan: EspoCRM API tersedia</h3><br> Kemungkinan masalah: cacat \"mod_rewrite\" di server Apache, dukungan htaccess cacat atau masalah RewriteBase Situs Apakah langkah hanya diperlukan.. Setelah setiap cek langkah jika masalah tersebut dipecahkan.",
"nginx": "<h3>API Kesalahan: EspoCRM API tersedia</h3>",
"microsoft-iis": "<h3>API Kesalahan:. EspoCRM API tersedia</h3> <br> masalah yang mungkin terjadi: cacat \"URL Rewrite\". Silakan periksa dan mengaktifkan \"URL Rewrite\" Modul di IIS server",
"default": "<h3>API Kesalahan: EspoCRM API tersedia</h3><br> masalah Kemungkinan: cacat Modul Rewrite. Silakan periksa dan memungkinkan Modul Rewrite di server Anda (misalnya mod_rewrite di Apache) dan dukungan .htaccess."
}
},
"systemRequirements": {
"requiredMysqlVersion": "versi MySQL",
"host": "Nama host",
"dbname": "Nama database",
"user": "Nama pengguna"
}
}

View File

@@ -0,0 +1,142 @@
{
"labels": {
"Main page title": "Benvenuto in EspoCRM",
"Start page title": "Contratto di licenza",
"Step1 page title": "Contratto di licenza",
"License Agreement": "Contratto di licenza",
"I accept the agreement": "Accetto il contratto",
"Step2 page title": "Configurazione Database",
"Step3 page title": "Setup Amministratore",
"Step4 page title": "Impostazioni di sistema",
"Step5 page title": "Impostazioni SMTP per le email in uscita",
"Errors page title": "Errori",
"Finish page title": "Installatione completata",
"Congratulation! Welcome to EspoCRM": "Congratulazioni! EspoCRM è stato installato correttamente.",
"More Information": "Per ulteriori informazioni , si prega di visitare il nostro {BLOG},seguici su {TWITTER}.<br><br>Se avete suggerimenti o domande , si prega di chiedere su {FORUM}.",
"share": "Se ti piace EspoCRM, condividilo con i tuoi amici. Fai conoscere questo prodotto.",
"blog": "Blog",
"twitter": "Twitter",
"forum": "Forum",
"Installation Guide": "Guida d'installazione",
"admin": "Admin",
"localhost": "Localhost",
"Locale": "Formato Dati",
"Outbound Email Configuration": "Configurazione email in uscita",
"Start": "Inizio",
"Back": "Indietro",
"Next": "Avanti",
"Go to EspoCRM": "Vai a EspoCRM",
"Re-check": "Ricontrolla",
"Version": "Versione",
"Test settings": "Test Connessione",
"Database Settings Description": "Inserisci i tuoi dati di connessione al database MySQL (nome host, nome utente e password). È possibile specificare anche la porta del server, esempio: localhost:3306.",
"Install": "Installa",
"Configuration Instructions": "Istruzioni di configurazione",
"phpVersion": "Versione PHP",
"dbHostName": "Nome Host",
"dbName": "Nome Database",
"dbUserName": "Nome Utente Database",
"SetupConfirmation page title": "Requisiti di Sistema",
"PHP Configuration": "Impostazioni PHP",
"MySQL Configuration": "Impostazioni Database",
"Permission Requirements": "Permessi",
"Success": "Successo",
"Fail": "Fallito",
"is recommended": "È consigliato",
"extension is missing": "Manca l'estensione",
"headerTitle": "Installazione di EspoCRM",
"Crontab setup instructions": "Senza eseguire i lavori pianificati, le e-mail in entrata, le notifiche e i promemoria non funzioneranno. Qui puoi leggere {SETUP_INSTRUCTIONS}.",
"Setup instructions": "Istruzioni di installazione",
"requiredMysqlVersion": "Versione MySQL",
"requiredMariadbVersion": "Versione MariaDB",
"requiredPostgresqlVersion": "Versione PostgreSQL"
},
"fields": {
"Choose your language": "Scegli la lingua",
"Database Name": "Nome Database",
"Host Name": "Nome Host",
"Port": "Porta",
"smtpPort": "Porta",
"Database User Name": "Nome Utente Database",
"Database User Password": "Password utente Database",
"Database driver": "Driver Database",
"User Name": "Nome utente",
"Confirm Password": "Conferma la password",
"From Address": "Indirizzo mittente",
"From Name": "Dal nome",
"Is Shared": "È condivisa",
"Date Format": "Formato Data",
"Time Format": "Formato Ora",
"Time Zone": "Fuso Orario",
"First Day of Week": "Primo Giorno della Settimana",
"Thousand Separator": "Separatore delle migliaia",
"Decimal Mark": "Marcatore dei decimali",
"Default Currency": "Valuta Predefinita",
"Currency List": "Elenco Valute",
"Language": "Lingua",
"smtpAuth": "Autenticazione",
"smtpSecurity": "Sicurezza",
"Platform": "Piattaforma"
},
"messages": {
"1045": "Accesso negato all'utente",
"1049": "Database Sconosciuto",
"2005": "MySQL server host non riconosciuto",
"Some errors occurred!": "Alcuni errori si sono verificati!",
"phpVersion": "la versione di PHP in uso non è supportata da EspoCRM, aggiornare PHP dalla versione {minVersion} in poi.",
"requiredMysqlVersion": "la versione di MySQL in uso non è supportata da EspoCRM, si raccomanda di aggiornare MySQL almeno alla versione {minVersion}.",
"The PHP extension was not found...": "Errore PHP: l'Estensione <b>{extName}</b> non è stata trovata.",
"All Settings correct": "Tutte le impostazioni sono corrette",
"Failed to connect to database": "Impossibile connettersi al database",
"PHP version": "Versione PHP",
"You must agree to the license agreement": "È necessario accettare il contratto di licenza",
"Passwords do not match": "Le password non corrispondono",
"Enable mod_rewrite in Apache server": "Attivare mod_rewrite in server Apache",
"checkWritable error": "Seleziona errore scrivibile\n",
"applySett error": "Applica errore Sett",
"buildDatabase error": "Errore buildDatabase",
"createUser error": "Generare errore utente",
"checkAjaxPermission error": "Errore checkAjaxPermission",
"Cannot create user": "Non è possibile creare un utente",
"Permission denied": "Permesso negato",
"Permission denied to": "Permesso negato",
"Can not save settings": "Impossibile salvare le impostazioni",
"Cannot save preferences": "Impossibile salvare le preferenze",
"Thousand Separator and Decimal Mark equal": "Separatore delle migliaia e decimali non possono essere uguali",
"extension": "{0} Estensione mancante",
"option": "Il valore consigliato è {0}",
"mysqlSettingError": "EspoCRM richiede che il valore MySQL di \"{NAME}\" sia impostato su {VALUE}",
"requiredMariadbVersion": "La tua versione di MariaDB non è supportata da EspoCRM, aggiorna almeno a MariaDB {minVersion}",
"Ajax failed": "Si è verificato un errore imprevisto",
"Bad init Permission": "Autorizzazione negata per la directory \"{*}\". Impostare 775 per \"{*}\" o semplicemente eseguire questo comando nel terminale <pre><b>{C}</b> </pre> Operazione non consentita? Prova questo: {CSU}",
"permissionInstruction": "<br> Esegui questo comando nel Terminale: <pre> <b> \"{C}\" </b> </pre>",
"operationNotPermitted": "Operazione non consentita? Prova questo: <br> <br> {CSU}"
},
"systemRequirements": {
"requiredPhpVersion": "Versione PHP",
"requiredMysqlVersion": "Versione MySQL",
"host": "Nome Host",
"dbname": "Nome Database",
"user": "Nome utente",
"writable": "Scrivibile",
"readable": "Leggibile",
"requiredMariadbVersion": "Versione MariaDB"
},
"options": {
"modRewriteTitle": {
"apache": "<h3>Errore API: l'API EspoCRM non è disponibile.</h3><br>Esegui solo i passaggi necessari. Dopo ogni passaggio, controlla se il problema è stato risolto.",
"nginx": "<h3>Errore API: l'API EspoCRM non è disponibile.</h3>",
"microsoft-iis": "<h3>Errore API: l'API EspoCRM non è disponibile.</h3><br> Possibile problema: \"URL Rewrite\" disabilitato. Verifica e abilitare il modulo \"URL Rewrite\" nel server IIS",
"default": "<h3>Errore API: l'API EspoCRM non è disponibile.</h3><br> Possibili problemi: modulo Rewrite disabilitato. Controlla e abilita il modulo Rewrite nel tuo server (ad es. mod_rewrite in Apache) ed il supporto .htaccess."
},
"modRewriteInstruction": {
"apache": {
"linux": "<br><br><h4>1. Abilita \"mod_rewrite\".</h4>Per abilitare <i>mod_rewrite</i>, esegui questi comandi in un terminale:<br><br><pre>{APACHE1}</pre><hr><h4>2 . Se il passaggio precedente non è stato di aiuto, prova ad abilitare il supporto .htaccess.</h4> Aggiungi/modifica le impostazioni di configurazione del server <code>{APACHE2_PATH1}</code> o <code>{APACHE2_PATH2}</code> (o < codice>{APACHE2_PATH3}</code>):<br><br><pre>{APACHE2}</pre>\n Successivamente esegui questo comando in un terminale:<br><br><pre>{APACHE3}</pre><hr><h4>3. Se il passaggio precedente non è stato di aiuto, prova ad aggiungere il percorso RewriteBase.</h4>Apri un file <code>{API_PATH}.htaccess</code> e sostituisci la seguente riga:<br><br><pre>{ APACHE4}</pre>A<br><br><pre>{APACHE5}</pre><hr>Per ulteriori informazioni, visita le linee guida <a href=\"{APACHE_LINK}\" target=\"_blank\">Configurazione Server Apache per EspoCRM</a>.<br><br>",
"windows": "<br><br> <h4>1. Trova il file httpd.conf.</h4>Di solito può essere trovato in una cartella chiamata \"conf\", \"config\" o qualcosa del genere.<br><br><h4>2. Modifica il file httpd.conf.</h4> All'interno del file httpd.conf decommenta la riga <code>{WINDOWS_APACHE1}</code> (rimuovi il cancelletto '#' davanti alla riga).<br>< br><h4>3. Controlla gli altri parametri.</h4>Controlla anche se la riga <code>ClearModuleList</code> non è commentata e assicurati che la riga <code>AddModule mod_rewrite.c</code> non sia commentata."
},
"nginx": {
"linux": "<br> Aggiungi questo codice al file di configurazione del tuo server Nginx <code>{NGINX_PATH}</code> all'interno della sezione \"server\":<br><br><pre>{NGINX}</pre> <br> Per ulteriori informazioni visita le linee guida <a href=\"{NGINX_LINK}\" target=\"_blank\">Configurazione del server Nginx per EspoCRM</a>.<br><br>"
}
}
}
}

View File

@@ -0,0 +1,152 @@
{
"labels": {
"Main page title": "EspoCRMへようこそ",
"Start page title": "ライセンス契約",
"Step1 page title": "ライセンス契約",
"License Agreement": "ライセンス契約",
"I accept the agreement": "同意します",
"Step2 page title": "データベース構成",
"Step3 page title": "管理者設定",
"Step4 page title": "システム設定",
"Step5 page title": "送信メールのSMTP設定",
"Errors page title": "エラー",
"Finish page title": "インストールが完了しました",
"Congratulation! Welcome to EspoCRM": "おめでとうございますEspoCRM が正常にインストールされました",
"More Information": "詳細については、{BLOG}をご覧くださいまた、{TWITTER}をフォローしてください<br><br>ご提案やご質問がございましたら、{FORUM}でお問い合わせください",
"share": " EspoCRMが気に入ったら、ぜひお友達とシェアして、この製品について知らせてください",
"blog": "ブログ",
"twitter": "ツイッター",
"forum": "フォーラム",
"Installation Guide": "インストールガイド",
"admin": "管理者",
"localhost": "ローカルホスト",
"Locale": "ロケール",
"Outbound Email Configuration": "送信メールの設定",
"Start": "始める",
"Back": "戻る",
"Next": "次",
"Go to EspoCRM": "EspoCRMへアクセス",
"Re-check": "再確認",
"Version": "バージョン",
"Test settings": "テスト接続",
"Database Settings Description": "MySQLデータベースの接続情報ホスト名、ユーザー名、パスワードを入力しますホスト名には、localhost:3306のようにサーバーポートを指定できます",
"Install": "インストール",
"Configuration Instructions": "設定手順",
"phpVersion": "PHPバージョン",
"dbHostName": "ホスト名",
"dbName": "データベース名",
"dbUserName": "データベースユーザー名",
"OK": "わかりました",
"SetupConfirmation page title": "システム要件",
"PHP Configuration": " PHP設定",
"MySQL Configuration": "データベース設定",
"Permission Requirements": "権限",
"Success": "成功",
"Fail": "失敗",
"is recommended": "推奨",
"extension is missing": "拡張機能がありません",
"headerTitle": "EspoCRMのインストール",
"Crontab setup instructions": "スケジュールジョブを実行しないと、受信メール、通知、リマインダーは機能しません{SETUP_INSTRUCTIONS} はこちらをご覧ください",
"Setup instructions": "セットアップ手順",
"requiredMysqlVersion": "MySQLバージョン",
"requiredMariadbVersion": "MariaDBバージョン",
"requiredPostgresqlVersion": " PostgreSQLバージョン"
},
"fields": {
"Choose your language": "言語を選択してください",
"Database Name": "データベース名",
"Host Name": "ホスト名",
"Port": "ポート",
"smtpPort": "ポート",
"Database User Name": "データベースユーザー名",
"Database User Password": "データベースユーザーパスワード",
"Database driver": "データベースドライバー",
"User Name": "ユーザー名",
"Password": "パスワード",
"smtpPassword": "パスワード",
"Confirm Password": "パスワードを確認してください",
"From Address": "送信元アドレス",
"From Name": "送信者名",
"Is Shared": "共有される",
"Date Format": "日付形式",
"Time Format": "時刻形式",
"Time Zone": "タイムゾーン",
"First Day of Week": "週の最初の日",
"Thousand Separator": "千の位区切り",
"Decimal Mark": "小数点",
"Default Currency": "デフォルト通貨",
"Currency List": "通貨リスト",
"Language": "言語",
"smtpServer": "サーバ",
"smtpAuth": "認証",
"smtpSecurity": "安全",
"smtpUsername": "ユーザー名",
"emailAddress": "メール",
"Platform": "プラットフォーム"
},
"messages": {
"1045": "ユーザーのアクセスが拒否されました",
"1049": "不明なデータベース",
"2005": "不明なMySQLサーバーホスト",
"Some errors occurred!": "エラーが発生しました",
"phpVersion": "ご使用のPHPバージョンはEspoCRMでサポートされていませんPHP {minVersion}以上に更新してください",
"requiredMysqlVersion": "ご使用のMySQLバージョンはEspoCRMでサポートされていませんMySQL {minVersion}以上に更新してください",
"The PHP extension was not found...": " PHP エラー: 拡張機能 <b>{extName></b> が見つかりません",
"All Settings correct": "すべての設定は正しいです",
"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": "Apacheサーバーでmod_rewriteを有効にする",
"checkWritable error": "書き込み可能チェックエラー",
"applySett error": "applySettエラー",
"buildDatabase error": "ビルドデータベースエラー",
"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": "千の位の区切り記号と小数点記号は同じにすることはできません",
"extension": "{0} 拡張子がありません",
"option": "推奨値は{0}です",
"mysqlSettingError": "EspoCRM では、MySQL 設定「{NAME}」を {VALUE} に設定する必要があります",
"requiredMariadbVersion": "お使いのMariaDBバージョンはEspoCRMでサポートされていません少なくともMariaDB {minVersion}に更新してください",
"Ajax failed": "予期しないエラーが発生しました",
"Bad init Permission": "「{*}」ディレクトリへのアクセス権が拒否されました「{*}」に775を設定するか、ターミナルで次のコマンドを実行してください<pre><b>{C></b></pre> 操作が許可されていませんか?こちらを試してください: {CSU}",
"permissionInstruction": " <br>ターミナルでこのコマンドを実行します:<pre><b>\"{C}\"</b></pre>",
"operationNotPermitted": "操作が許可されていませんか?こちらをお試しください: <br><br>{CSU}"
},
"options": {
"db driver": {
"mysqli": " MySQLi",
"pdo_mysql": " PDO MySQL"
},
"modRewriteTitle": {
"apache": " <h3>APIエラー: EspoCRM APIは利用できません</h3><br>必要な手順のみを実行してください各手順の実行後、問題が解決したかどうかを確認してください",
"nginx": " <h3>API エラー: EspoCRM API は利用できません</h3>",
"microsoft-iis": " <h3>APIエラー: EspoCRM APIは利用できません</h3><br> 考えられる原因: 「URL Rewrite」が無効になっていますIISサーバーの「URL Rewrite」モジュールを確認し、有効にしてください",
"default": "<h3>APIエラー: EspoCRM APIは利用できません</h3><br> 考えられる原因: Rewriteモジュールが無効になっていますサーバーのRewriteモジュールApacheのmod_rewriteなどと.htaccessのサポートを確認し、有効にしてください"
},
"modRewriteInstruction": {
"apache": {
"linux": "<br><br><h4>1. 「mod_rewrite」を有効にします</h4><i>mod_rewrite</i> を有効にするには、ターミナルで次のコマンドを実行します:<br><br><pre>{APACHE1}</pre><hr><h4>2. 前の手順で問題が解決しなかった場合は、.htaccess サポートを有効にしてみてください</h4> サーバー構成設定 <code>{APACHE2_PATH1}</code> または <code>{APACHE2_PATH2}</code> (または <code>{APACHE2_PATH3}) を追加/編集します:<br><br><pre>{APACHE2}</pre> その後、ターミナルで次のコマンドを実行します:<br><br><pre>{APACHE3}</pre><hr><h4>3.前の手順で問題が解決しない場合は、RewriteBase パスを追加してみてください<code>{API_PATH}.htaccess</code> ファイルを開き、次の行を置き換えます<br><br><pre>{APACHE4</pre>To<br><br><pre>{APACHE5</pre><hr>詳細については、ガイドライン「<a href=\"{APACHE_LINK}\" target=\"_blank\">EspoCRM の Apache サーバー構成</a>」をご覧ください<br><br>",
"windows": "<br><br> <h4>1. httpd.conf ファイルを見つけます</h4>通常、このファイルは「conf」、「config」などの名前のフォルダにあります<br><br><h4>2. httpd.conf ファイルを編集します</h4>httpd.conf ファイル内で、行 <code>{WINDOWS_APACHE1} のコメントを解除します (行の先頭の # 記号を削除します)<br><br><h4>3. その他のパラメータを確認します</h4>また、行 <code>ClearModuleList</code> のコメントが解除されているかどうかを確認し、行 <code>AddModule mod_rewrite.c</code> がコメント アウトされていないことを確認します"
},
"nginx": {
"linux": "<br> Nginx サーバー構成ファイル <code>{NGINX_PATH}code> の \"server\" セクションに次のコードを追加します:<br><br><pre>{NGINX}pre> <br> 詳細については、ガイドライン「<a href=\"{NGINX_LINK}\" target=\"_blank\">EspoCRM の Nginx サーバー構成</a>」をご覧ください<br><br>"
}
}
},
"systemRequirements": {
"requiredPhpVersion": " PHPバージョン",
"requiredMysqlVersion": "MySQLバージョン",
"host": "ホスト名",
"dbname": "データベース名",
"user": "ユーザー名",
"writable": "書き込み可能",
"readable": "読みやすい",
"requiredMariadbVersion": "MariaDBバージョン"
}
}

View File

@@ -0,0 +1,144 @@
{
"labels": {
"Main page title": "Sveiki prisijungę prie EspoCRM",
"Start page title": "Licencijos sutartis",
"Step1 page title": "Licencijos sutartis",
"License Agreement": "Licencijos sutartis",
"I accept the agreement": "Sutinku su sutarties sąlygomis",
"Step2 page title": "Duomenų bazės konfigūravimas",
"Step3 page title": "Administratoriaus sąranka",
"Step4 page title": "Sistemos nustatymai",
"Step5 page title": "SMTP nustatymai išsiunčiamiems laiškams",
"Errors page title": "Klaidos",
"Finish page title": "Diegimas baigtas",
"Congratulation! Welcome to EspoCRM": "Sveikiname! EspoCRM buvo sėkmingai įdiegtas.",
"More Information": "Jei reikia daugiau informacijos, apsilankykite mūsų {BLOG} svetainėje, Sekite mus {TWITTER}. <br> <br> Jei turite kokių nors pasiūlymų ar klausimų, kreipkitės į {FORUM}.",
"share": "Jei jums patiko EspoCRM, pasidalinkite tai su draugais. Praneškite jiems apie šį produktą.",
"blog": "blogas",
"twitter": "twitter ",
"forum": "forumas",
"Installation Guide": "Diegimo vedlys",
"Outbound Email Configuration": "Nustatymai išsiunčiamiems laiškams",
"Start": "Pradžia",
"Back": "Atgal",
"Next": "Kitas",
"Go to EspoCRM": "Eiti į EspoCRM",
"Re-check": "Pakartotinai patikrinti",
"Version": "Versija",
"Test settings": "Patikrinti ryšį",
"Database Settings Description": "Įveskite MySQL duomeno bazės prisijungimo informaciją (kompiuterio pavadinim?, vartotojo vardą ir slaptažodį). Galite nurodyti serverio prievadą, skirtą kompiuterio pavadinimui, pvz., Localhost: 3306.",
"Install": "Diegimas",
"Configuration Instructions": "Konfigūracijos instrukcijos",
"phpVersion": "PHP versija",
"dbHostName": "Serverio pavadinimas",
"dbName": "Duomenų bazės pavadinimas",
"dbUserName": "Duomenų bazės vartotojo vardas",
"OK": "Gerai",
"SetupConfirmation page title": "Sistemos reikalavimai",
"PHP Configuration": "PHP nustatymai",
"MySQL Configuration": "Duomenų bazės nustatymai",
"Permission Requirements": "Teisės",
"Success": "Pavyko",
"Fail": "Nepavyko",
"is recommended": "rekomenduojama",
"extension is missing": "trūksta plėtinio",
"headerTitle": "\"EspoCRM\" diegimas",
"Crontab setup instructions": "Nevykdant suplanuotų užduočių neveiks gaunamieji el. laiškai, pranešimai ir priminimai. Čia galite perskaityti {SETUP_INSTRUKCIJOS}.",
"Setup instructions": "sąrankos instrukcijos",
"requiredMysqlVersion": "\"MySQL\" versija",
"requiredMariadbVersion": "MariaDB versija",
"requiredPostgresqlVersion": "\"PostgreSQL\" versija"
},
"fields": {
"Choose your language": "Pasirinkite kalb?",
"Database Name": "Duomenų bazės pavadinimas",
"Host Name": "Serverio pavadinimas",
"Port": "Prievadas",
"smtpPort": "Prievadas",
"Database User Name": "Duomenų bazės vartotojo vardas",
"Database User Password": "Duomenų bazės vartotojo slaptažodis",
"Database driver": "Duomenų bazės tvarkyklė",
"User Name": "Vartotojo vardas",
"Password": "Slaptažodis",
"smtpPassword": "Slaptažodis",
"Confirm Password": "Patvirtinkite savo slaptažodį",
"From Address": "Nuo adreso",
"From Name": "Nuo vardo",
"Is Shared": "Yra pasidalinta",
"Date Format": "Datos formatas",
"Time Format": "Laiko formatas",
"Time Zone": "Laiko zona",
"First Day of Week": "Pirma savaitės diena",
"Thousand Separator": "Tūkstančių atskyriklis",
"Decimal Mark": "Dešimtainis ženklas",
"Default Currency": "Pagrindinė valiuta",
"Currency List": "Valiutų sąrašas",
"Language": "Kalba",
"smtpServer": "Serveris",
"smtpSecurity": "Sauga",
"smtpUsername": "Vartotojo vardas",
"emailAddress": "El. paštas",
"Platform": "Platforma"
},
"messages": {
"1045": "Vartotojui prieiga yra uždrausta ",
"1049": "Nežinoma duomenų bazė",
"2005": "Nežinomas MySQL serverio kompiuteris",
"Some errors occurred!": "Įvyko kelios klaidos!",
"phpVersion": "EspoCRM nepalaiko jūsų PHP versijos, bent jau atnaujinkite iki PHP {minVersion}",
"requiredMysqlVersion": "Jūsų \"MySQL\" versija nepalaikoma EspoCRM, prašome atnaujinti bent iki \"MySQL\" (minVersion)",
"The PHP extension was not found...": "PHP klaida: plėtinys <b> {extName} </b> nerastas.",
"All Settings correct": "Visi nustatymai yra teisingi",
"Failed to connect to database": "Nepavyko prisijungti prie duomenų bazės",
"PHP version": "PHP versija",
"You must agree to the license agreement": "Jūs turite sutikti su licencijos sutartimi",
"Passwords do not match": "Slaptažodžiai nesutampa",
"Enable mod_rewrite in Apache server": "Įgalinti mod_rewrite \"Apache\" serveryje",
"checkWritable error": "checkWritable klaida",
"applySett error": "applySett klaida",
"buildDatabase error": "Kuriamos duomenų bazės klaida",
"createUser error": "createUser klaida",
"checkAjaxPermission error": "checkAjaxPermission klaida",
"Cannot create user": "Negalima sukurti vartotojo",
"Permission denied": "Leidimas nesuteiktas",
"Permission denied to": "Leidimas nesuteiktas",
"Can not save settings": "Nepavyko išsaugoti nustatymų",
"Cannot save preferences": "Negalima išsaugoti nuostatų",
"Thousand Separator and Decimal Mark equal": "Tūkstančių atskyriklis ir dešimtainis ženklas negali būti vienodi",
"extension": "Trūksta {0} plėtinio",
"option": "Rekomenduojama vertė yra {0} ",
"mysqlSettingError": "EspoCRM reikalauja, kad MySQL nustatymas \"{NAME}\" būtų nustatytas į \"{VALUE}\"",
"requiredMariadbVersion": "EspoCRM nepalaiko jūsų MariaDB versijos, atnaujinkite ją bent iki MariaDB {minVersion}.",
"Ajax failed": "Įvyko netikėta klaida",
"Bad init Permission": "Atsisakyta suteikti leidimą \"{*}\" katalogui. Prašome nustatyti 775 \"{*}\" arba tiesiog įvykdyti šią komandą terminale <pre><b>{C}</b></pre> Operacija neleidžiama? Išbandykite šią: {CSU}",
"permissionInstruction": "<br>Paleiskite šią komandą terminale:<pre><b>\"{C}\"</b></pre>",
"operationNotPermitted": "Operacija neleidžiama? Išbandykite šį: <br><br>{CSU}"
},
"systemRequirements": {
"requiredPhpVersion": "PHP versija",
"requiredMysqlVersion": "MySQL versija",
"host": "Serverio pavadinimas",
"dbname": "Duomenų bazės pavadinimas",
"user": "naudotojo vardas",
"writable": "Įrašymo",
"readable": "Skaitymo",
"requiredMariadbVersion": "MariaDB versija"
},
"options": {
"modRewriteTitle": {
"apache": "<h3>API klaida: </h3><br>Darykite tik būtinus veiksmus. Po kiekvieno žingsnio patikrinkite, ar problema išspręsta.",
"nginx": "<h3>API klaida: </h3>: EspoCRM API nepasiekiama </h3>.",
"microsoft-iis": "<h3>API klaida: </h3><br>Galima problema: išjungtas \"URL Rewrite\". Patikrinkite ir įjunkite \"URL Rewrite\" modulį IIS serveryje.",
"default": "<h3>API klaida: </h3><br> Galimos problemos: išjungtas perrašymo modulis. Patikrinkite ir įjunkite Rewrite modulį savo serveryje (pvz., mod_rewrite \"Apache\") ir .htaccess palaikymą."
},
"modRewriteInstruction": {
"apache": {
"linux": "<br><br><h4>1. Įjunkite \"mod_rewrite\".</h4>Kad įjungtumėte <i>mod_rewrite</i>, terminale paleiskite šias komandas:<br><br><pre>{APACHE1}</pre><hr><h4>2. Jei ankstesnis žingsnis nepadėjo, pabandykite įjungti .htaccess palaikymą.</h4> Pridėkite / redaguokite serverio konfigūracijos nustatymus <code>{{APACHE2_PATH1}</code> arba <code>{APACHE2_PATH2}</code> (arba <code>{APACHE2_PATH3}</code>):<br><br><pre>{APACHE2}</pre>\n Po to terminale paleiskite šią komandą:<br><br><pre>{APACHE3}</pre><hr><h4>3. Jei ankstesnis žingsnis nepadėjo, pabandykite pridėti RewriteBase kelią.</h4>Atidarykite failą <code>{{API_PATH}.htaccess</code> ir pakeiskite šią eilutę:<br><br><pre>{APACHE4}</pre>Į<br><pre>{APACHE5}</pre><hr>Daugiau informacijos rasite gairėse <a href=\"{APACHE_LINK}\" target=\"_blank\">\"EspoCRM\" \"Apache\" serverio konfigūracija</a>.<br><br>Daugiau informacijos rasite gairėse <a href=\"{APACHE_LINK}\" target=\"_blank\">\"EspoCRM\" \"Apache\" serverio konfigūracija</a>.",
"windows": "<br><br> <h4>1. Raskite httpd.conf failą.</h4>Įprastai jį rasite aplanke, kuris vadinasi \"conf\", \"config\" ar panašiai.<br><br><h4>2. Redaguokite httpd.conf failą.</h4> httpd.conf failo viduje iškomentuokite eilutę <code>{WINDOWS_APACHE1}</code> (pašalinkite prieš eilutę esantį ženklą '#').<br><br><h4>3. Patikrinkite kitus parametrus.</h4>Taip pat patikrinkite, ar eilutė <code>ClearModuleList</code> nekomentuojama, ir įsitikinkite, kad eilutė <code>AddModule mod_rewrite.c</code> nekomentuojama.\n"
},
"nginx": {
"linux": "<br> Į savo \"Nginx\" serverio konfigūracijos failą <code>{NGINX_PATH}</code> skiltyje \"serveris\" įtraukite šį kodą:<br><br><pre>{NGINX}</pre> <br> Daugiau informacijos rasite gairėse <a href=\"{NGINX_LINK}\" target=\"_blank\">\"Nginx\" serverio konfigūracija EspoCRM</a>.<br><br>"
}
}
}
}

View File

@@ -0,0 +1,148 @@
{
"labels": {
"Main page title": "Laipni lūdzam \"EspoCRM\"",
"Start page title": "Licences līgums",
"Step1 page title": "Licences līgums",
"License Agreement": "Licences līgums",
"I accept the agreement": "Piekrītu līguma nosacījumiem",
"Step2 page title": "Datubāzes konfigurācija",
"Step3 page title": "Administratora iestatīšana",
"Step4 page title": "Sistēmas iestatījumi",
"Step5 page title": "SMTP iestatījumi izejošajiem e-pastiem",
"Errors page title": "Kļūdas",
"Finish page title": "instalēšana pabeigta",
"Congratulation! Welcome to EspoCRM": "Apsveicam! \"EspoCRM\" ir sekmīgi instalēta.",
"More Information": "Vairāk informācijas atradīsiet šeit: {BLOG}. Sekojiet mums arī \"Twitter\" lapā: {TWITTER}.<br><br>Ierosinājumiem vai jautājumiem lūdzam izmantot forumu {FORUM}.",
"share": "Ja jums patīk \"EspoCRM\", padalieties ar saviem draugiem. Pastāstiet tiem par šo produktu.",
"blog": "emuāri",
"twitter": "\"Twitter\"",
"forum": "forums",
"Installation Guide": "Instalēšanas rokasgrāmata",
"admin": "administrators",
"localhost": "Lokālais resursdators",
"Locale": "Lokalizācija",
"Outbound Email Configuration": "Izejošā e-pasta konfigurācija",
"Start": "Sākums",
"Back": "Atpakaļ",
"Next": "Nākamais",
"Go to EspoCRM": "Doties uz \"EspoCRM\"",
"Re-check": "Pārbaudīt atkārtoti",
"Version": "Versija",
"Test settings": "Testa savienojums",
"Database Settings Description": "Ievadiet MySQL datu bāzes savienojuma informāciju (resursdatora nosaukums, lietotājvārds un parole). Kā resursdatora nosaukumu varat norādīt servera portu, piem., localhost:3306.",
"Install": "Instalēt",
"Configuration Instructions": "Konfigurācijas norādījumi",
"phpVersion": "PHP versija",
"dbHostName": "Resursdatora nosaukums",
"dbName": "Datubāzes nosaukums",
"dbUserName": "Datubāzes lietotājvārds",
"OK": "Labi",
"SetupConfirmation page title": "Sistēmas prasības",
"PHP Configuration": "PHP iestatījumi",
"MySQL Configuration": "Datu bāzes iestatījumi",
"Permission Requirements": "Atļaujas",
"Success": "Panākumi",
"Fail": "Neveiksme",
"is recommended": "ir ieteicams",
"extension is missing": "trūkst pagarinājuma",
"headerTitle": "EspoCRM uzstādīšana",
"Crontab setup instructions": "Ja netiks palaisti plānotie darbi, ienākošie e-pasti, paziņojumi un atgādinājumi nedarbosies. Šeit varat izlasīt {SETUP_INSTRUCTIONS}.",
"Setup instructions": "iestatīšanas instrukcijas",
"requiredMysqlVersion": "MySQL versija",
"requiredMariadbVersion": "MariaDB versija",
"requiredPostgresqlVersion": "PostgreSQL versija"
},
"fields": {
"Choose your language": "Izvēlieties valodu",
"Database Name": "Datubāzes nosaukums",
"Host Name": "Resursdatora nosaukums",
"Port": "Ports",
"smtpPort": "Ports",
"Database User Name": "Datubāzes lietotājvārds",
"Database User Password": "Datubāzes lietotāja parole",
"Database driver": "Datubāzes draiveris",
"User Name": "Lietotājvārds",
"Password": "Parole",
"smtpPassword": "Parole",
"Confirm Password": "Apstiprināt paroli",
"From Address": "No adreses",
"From Name": "Kā vārdā",
"Is Shared": "Ir kopīgots",
"Date Format": "Datuma formāts",
"Time Format": "Laika formāts",
"Time Zone": "Laika zona",
"First Day of Week": "Pirmā nedēļas diena",
"Thousand Separator": "Tūkstošu atdalītājs",
"Decimal Mark": "Decimālzīme",
"Default Currency": "Noklusējuma valūta",
"Currency List": "Valūtu saraksts",
"Language": "Valoda",
"smtpServer": "Serveris",
"smtpAuth": "Autentifikācija",
"smtpSecurity": "Drošība",
"smtpUsername": "Lietotājvārds",
"emailAddress": "E-pasts",
"Platform": "Platforma"
},
"messages": {
"1045": "Piekļuve liegta lietotājam",
"1049": "Nezināma datubāze",
"2005": "Nezināms MySQL servera resursdators",
"Some errors occurred!": "Ir radušās kļūdas!",
"phpVersion": "\"EspoCRM\" neatbalsta jūsu PHP versiju, lūdzu atjauniniet. Izmantojiet vismaz PHP {minVersion}",
"requiredMysqlVersion": "\"EspoCRM\" neatbalsta jūsu MySQL versiju, lūdzu atjauniniet. Izmantojiet vismaz MySQL {minVersion}",
"The PHP extension was not found...": "PHP kļūda: paplašinājums <b>{extName}</b> nav atrasts.",
"All Settings correct": "Visi iestatījumi ir pareizi",
"Failed to connect to database": "Neizdevās savienoties ar datubāzi",
"PHP version": "PHP versija",
"You must agree to the license agreement": "Jums jāpiekrīt licences līguma nosacījumiem",
"Passwords do not match": "Paroles nesakrīt",
"Enable mod_rewrite in Apache server": "Atļaujiet režīma pārrakstīšanu \"Apache\" serverī",
"checkWritable error": "Ierakstāmības pārbaudes kļūda",
"applySett error": "Iestatījumu lietošanas kļūda",
"buildDatabase error": "Datubāzes izveides kļūda",
"createUser error": "Lietotāja izveides kļūda",
"checkAjaxPermission error": "\"Ajax\" atļaujas pārbaudes kļūda",
"Cannot create user": "Nevar izveidot lietotāju",
"Permission denied": "Atļauja liegta",
"Permission denied to": "Atļauja liegta",
"Can not save settings": "Nevar saglabāt iestatījumus",
"Cannot save preferences": "Nevar saglabāt preferences",
"Thousand Separator and Decimal Mark equal": "Tūkstošu atdalītājs un decimālzīme nedrīkst būt vienādi",
"extension": "{0} paplašinājums iztrūkst",
"option": "Ieteicamā vērtība ir {0}",
"mysqlSettingError": "\"EspoCRM\" pieprasa, lai MySQL iestatījuma \"{name}\" vērtība būtu {vērtība}",
"requiredMariadbVersion": "Jūsu MariaDB versiju EspoCRM neatbalsta, lūdzu, atjauniniet to vismaz līdz MariaDB {minVersion}.",
"Ajax failed": "Notika neparedzēta kļūda",
"Bad init Permission": "Atļauja liegta direktorijai \"{*}\". Lūdzu, iestatiet \"{*}\" 775 vai vienkārši izpildiet šo komandu terminālī <pre><b>{C}</b></pre> Operācija nav atļauta? Izmēģiniet šo: {CSU}",
"permissionInstruction": "<br>Terminālā izpildiet šo komandu:<pre><b>\"{C}\"</b></pre>",
"operationNotPermitted": "Darbība nav atļauta? Izmēģiniet šo: <br><br>{CSU}"
},
"systemRequirements": {
"requiredPhpVersion": "PHP versija",
"requiredMysqlVersion": "MySQL versija",
"host": "Saimniekdatora nosaukums",
"dbname": "Datubāzes nosaukums",
"user": "Lietotāja vārds",
"writable": "Rakstiski",
"readable": "Lasāmi",
"requiredMariadbVersion": "MariaDB versija"
},
"options": {
"modRewriteTitle": {
"apache": "<h3>API kļūda: </h3><br>Dariet tikai nepieciešamos soļus. Pēc katra soļa pārbaudiet, vai problēma ir atrisināta.",
"nginx": "<h3>API kļūda: EspoCRM API nav pieejams </h3>.",
"microsoft-iis": "<h3>API kļūda: </h3><br> Iespējamā problēma: atspējots \"URL Rewrite\". Lūdzu, pārbaudiet un iespējojiet \"URL Rewrite\" moduli IIS serverī.",
"default": "<h3>API kļūda: </h3><br> 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": "<br><br><h4>1. Ieslēdziet \"mod_rewrite\".</h4> Lai iespējotu <i>mod_rewrite</i>, terminālī izpildiet šīs komandas:<br><br><pre>{APACHE1}</pre><hr><h4>2. Ja iepriekšējais solis nepalīdzēja, mēģiniet iespējot .htaccess atbalstu.</h4> Pievienojiet/rediģējiet servera konfigurācijas iestatījumus <code>{{APACHE2_PATH1}</code> vai <code>{APACHE2_PATH2}</code> (vai <code>{APACHE2_PATH3}</code>):<br><br><pre>{APACHE2}</pre>\n Pēc tam izpildiet šo komandu terminālī:<br><br><pre>{{APACHE3}</pre><hr><h4>3. Ja iepriekšējais solis nav palīdzējis, mēģiniet pievienot RewriteBase ceļu.</h4>Atveriet failu <code>{{API_PATH}.htaccess</code> un nomainiet šādu rindu:<br><br><pre>{{APACHE4}</pre>Uz<br><pre>{APACHE5}</pre><hr>Lai iegūtu vairāk informācijas, lūdzu, apmeklējiet vadlīnijas <a href=\"{APACHE_LINK}\" target=\"_blank\">Apache servera konfigurācija EspoCRM</a>.<br><br>",
"windows": "<br><br> <h4>1. Atrodiet httpd.conf failu.</h4>Parasti to var atrast mapē ar nosaukumu \"conf\", \"config\" vai līdzīgi.<br><br><h4>2. Rediģējiet httpd.conf failu.</h4> httpd.conf faila iekšpusē atkomentējiet rindu <code>{WINDOWS_APACHE1}</code> (noņemiet zīmi '#' rindas priekšā).<br><br><h4>3. Pārbaudiet citus parametrus </h4>Pārbaudiet arī, vai ir atkomentēta rinda <code>ClearModuleList</code>, un pārliecinieties, vai nav komentēta rinda <code>AddModule mod_rewrite.c</code>.\n"
},
"nginx": {
"linux": "<br> Pievienojiet šo kodu savam Nginx servera konfigurācijas failam <code>{NGINX_PATH}</code> sadaļā \"serveris\":<br><br><pre>{NGINX}</pre> <br> Lai iegūtu vairāk informācijas, lūdzu, apmeklējiet norādījumus <a href=\"{NGINX_LINK}\" target=\"_blank\">Nginx servera konfigurācija EspoCRM</a>.<br><br>."
}
}
}
}

View File

@@ -0,0 +1,114 @@
{
"labels": {
"Main page title": "Velkommen til EspoCRM",
"Start page title": "Lisensavtale",
"Step1 page title": "Lisensavtale",
"License Agreement": "Lisensavtale",
"I accept the agreement": "Jeg aksepterer avtalen",
"Step2 page title": "Databasekonfigurasjon",
"Step3 page title": "Administratoroppsett",
"Step4 page title": "Systeminnstillinger",
"Step5 page title": "SMTP-innstillinger for utgående epost",
"Errors page title": "Feilmeldinger",
"Finish page title": "Installasjonen er fullført",
"Congratulation! Welcome to EspoCRM": "Gratulerer! EspoCRM har blitt installert uten problemer.",
"More Information": "Besøk vår {BLOG} eller følg oss på {TWITTER} for mer informasjon.<br><br>Hvis du har forslag eller innspill kan du besøke vårt {FORUM}.",
"share": "Hvis du liker EspoCRM oppfordrer vi deg til å fortelle andre om applikasjonen.",
"blog": "blogg",
"Installation Guide": "Installasjonsveiledning",
"Locale": "Språk og nasjonalitet",
"Outbound Email Configuration": "Innstillinger for utgående epost",
"Back": "Tilbake",
"Next": "Neste",
"Go to EspoCRM": "Gå til EspoCRM",
"Re-check": "Sjekk på nytt",
"Version": "Versjon",
"Test settings": "Test tilkobling",
"Database Settings Description": "Oppgi tilkoblingsinformasjonen til MySQL-databasen (tjenernavn, brukernavn og passord). Du kan spesifisere tjenerens port slik: localhost:3306.",
"Install": "Installér",
"Configuration Instructions": "Konfigurasjonsinstruks",
"phpVersion": "PHP-versjon",
"requiredMysqlVersion": "MySQL versjon",
"dbHostName": "Tjenernavn",
"dbName": "Databasenavn",
"dbUserName": "Databasebrukernavn",
"SetupConfirmation page title": "Systemkrav",
"PHP Configuration": "PHP innstillinger",
"MySQL Configuration": "Databaseinnstillinger",
"Permission Requirements": "Tillatelser",
"Success": "Suksess",
"Fail": "Feil",
"is recommended": "er anbefalt",
"extension is missing": "utvidelse mangler",
"headerTitle": "EspoCRM Installasjon"
},
"fields": {
"Choose your language": "Velg språk",
"Database Name": "Databasenavn",
"Host Name": "Tjenernavn",
"Database User Name": "Databasebrukernavn",
"Database User Password": "Databasepassord",
"Database driver": "Databasedriver",
"User Name": "Brukernavn",
"Password": "Passord",
"smtpPassword": "Passord",
"Confirm Password": "Bekreft passordet",
"From Address": "Fra-adresse",
"From Name": "Fra-navn",
"Is Shared": "Er delt",
"Date Format": "Datoformat",
"Time Format": "Tidsformat",
"Time Zone": "Tidssone",
"First Day of Week": "Første dag i uken",
"Thousand Separator": "Tusentallsdeler",
"Decimal Mark": "Desimaltegn",
"Default Currency": "Forvalgt valuta",
"Currency List": "Valutaliste",
"Language": "Språk",
"smtpServer": "Tjener",
"smtpAuth": "Autentisering",
"smtpSecurity": "Sikkerhet",
"smtpUsername": "Brukernavn",
"emailAddress": "Epost"
},
"messages": {
"1045": "Tilgang nektet for brukeren",
"1049": "Ukjent database",
"2005": "Ukjent MySQL-tjener",
"Some errors occurred!": "Det oppstod noen feil!",
"phpVersion": "Din PHP-versjon er ikke støtte av EspoCRM, Vennligst oppgrader til {minVersion} eller nyere.",
"requiredMysqlVersion": "Din MySQL-versjon er ikke støttet av EspoCRM. Vennligst oppgrader til {minVersion} eller nyere.",
"The PHP extension was not found...": "PHP-feil: Utvidelsen <b>{extName}</b> ble ikke funnet.",
"All Settings correct": "Alle innstillingene er riktig",
"Failed to connect to database": "Klarte ikke å koble til databasen",
"PHP version": "PHP-versjon",
"You must agree to the license agreement": "Du må godta lisensavtalen før du fortsetter",
"Passwords do not match": "Passordene du har oppgitt er ikke like",
"Enable mod_rewrite in Apache server": "Aktiver mod_rewrite på Apache-tjeneren",
"checkWritable error": "checkWritable-feil",
"applySett error": "applySett-feil",
"buildDatabase error": "buildDatabase-feil",
"createUser error": "createUser-feil",
"checkAjaxPermission error": "checkAjaxPermission-feil",
"Cannot create user": "Kan ikke opprette en bruker",
"Permission denied": "Tilgang nektet",
"Permission denied to": "Tilgang nektet",
"Can not save settings": "Kan ikke lagre innstillinger",
"Cannot save preferences": "Kan ikke lagre preferanser",
"Thousand Separator and Decimal Mark equal": "Tusentallsdeler og desimaltegn kan ikke være det samme",
"extension": "{0} utvidelser mangler",
"option": "Anbefalt verdi er {0}",
"mysqlSettingError": "EspoCRM krever at MySQL-innstillingen \"{NAME}\" endres til {VALUE}",
"requiredMariadbVersion": "Din MariaDB-versjon er ikke støttet av EspoCRM. Vennligst oppgrader til {minVersion} eller nyere."
},
"systemRequirements": {
"requiredPhpVersion": "PHP-Versjon",
"requiredMysqlVersion": "MySQL versjon",
"host": "Tjenernavn",
"dbname": "Databasenavn",
"user": "Brukernavn",
"writable": "Skrivetillatelse",
"readable": "Lesbar",
"requiredMariadbVersion": "MariaDB Versjon"
}
}

View File

@@ -0,0 +1,135 @@
{
"labels": {
"Main page title": "Welkom bij EspoCRM",
"Start page title": "Licentie Overeenkomst",
"Step1 page title": "Licentie Overeenkomst",
"License Agreement": "Licentie Overeenkomst",
"I accept the agreement": "Ik accepteer de overeenkomst",
"Step2 page title": "Database configuratie",
"Step3 page title": "Administrator Instellingen",
"Step4 page title": "Systeem instellingen",
"Step5 page title": "SMTP instellingen voor uitgaande E-mails",
"Errors page title": "Fouten",
"Finish page title": "Installatie is voltooid",
"Congratulation! Welcome to EspoCRM": "Gefeliciteerd! EspoCRM is succesvol geïnstalleerd.",
"More Information": "Voor meer informatie, bezoek onze {BLOG}, volg ons op {TWITTER}.<br><br> Vragen of verzoeken kunt u vermelden op het {FORUM}.",
"share": "Tevreden over EspoCRM, deel dit dan met je vrienden. Informeer ze over ons product.",
"Installation Guide": "Installatiegids",
"admin": "beheerder",
"Locale": "Lokaal",
"Outbound Email Configuration": "Uitgaande E-mail Configuratie",
"Back": "Terug",
"Next": "Volgende",
"Go to EspoCRM": "Ga naar EspoCRM",
"Version": "Versie",
"Test settings": "Test verbinding",
"Database Settings Description": "Voer uw MySQL database gegevens (hostnaam, gebruikersnaam en wachtwoord) in. U kunt de server poort opgeven voor hostnaam zoals localhost: 3306.",
"Install": "Installeren",
"Configuration Instructions": "Configuratie Instructies",
"phpVersion": "PHP versie",
"dbHostName": "Hostnaam",
"dbName": "Database naam",
"dbUserName": "Database gebruikersnaam",
"SetupConfirmation page title": "Systeemeisen",
"PHP Configuration": "PHP-instellingen",
"MySQL Configuration": "Database instellingen",
"Permission Requirements": "Rechten",
"Success": "Succesvol",
"Fail": "Mislukt",
"is recommended": "is aanbevolen",
"extension is missing": "extensie ontbreekt",
"headerTitle": "EspoCRM-installatie",
"Crontab setup instructions": "Zonder het uitvoeren van geplande taken zullen inkomende e-mails, meldingen en herinneringen niet werken. Hier kunt u {SETUP_INSTRUCTIONS} lezen.",
"Setup instructions": "setup-instructies",
"requiredMysqlVersion": "MySQL Versie",
"requiredMariadbVersion": "MariaDB versie",
"requiredPostgresqlVersion": "PostgreSQL versie"
},
"fields": {
"Choose your language": "Kies uw taal",
"Database Name": "Database naam",
"Host Name": "Hostnaam",
"Port": "Poort",
"smtpPort": "Poort",
"Database User Name": "Database gebruikersnaam",
"Database User Password": "Database gebruikersnaam wachtwoord",
"User Name": "Gebruikersnaam",
"Password": "Wachtwoord",
"smtpPassword": "Wachtwoord",
"Confirm Password": "Bevestig uw wachtwoord",
"From Address": "Van Adres",
"From Name": "Van naam",
"Is Shared": "Gedeeld",
"Date Format": "Datumnotatie",
"Time Format": "Tijdnotatie",
"Time Zone": "Tijdzone",
"First Day of Week": "Eerste dag van de Week",
"Thousand Separator": "Duizendtal scheidingsteken",
"Decimal Mark": "Decimaal scheidingsteken",
"Default Currency": "Standaard Valuta",
"Currency List": "Valuta Lijst",
"Language": "Taal",
"smtpSecurity": "Beveiliging",
"smtpUsername": "Gebruikersnaam",
"emailAddress": "E-mail"
},
"messages": {
"1045": "Geen rechten voor de gebruiker",
"1049": "Onbekende database",
"2005": "Onbekende MySQL server host",
"Some errors occurred!": "Er zijn fouten opgetreden!",
"phpVersion": "Uw PHP-versie wordt niet ondersteund door EspoCRM, update ten minste naar PHP {minVersion}",
"requiredMysqlVersion": "Uw MySQL-versie wordt niet ondersteund door EspoCRM, update ten minste naar MySQL {minVersion}",
"The PHP extension was not found...": "PHP Error: Extensie <b>{extName}</b> is niet gevonden.",
"All Settings correct": "Alle Instellingen zijn juist",
"Failed to connect to database": "Kan geen verbinding maken met de database",
"PHP version": "PHP versie",
"You must agree to the license agreement": "U moet instemmen met de licentie voorwaarden",
"Passwords do not match": "Wachtwoorden stemmen niet overeen",
"Enable mod_rewrite in Apache server": "Activeer mod_rewrite in Apache server",
"checkWritable error": "Controleer schrijf fout",
"applySett error": "Toepassing fout",
"buildDatabase error": "Database maken fout",
"createUser error": "Fout in aanmaken gebruiker",
"checkAjaxPermission error": "Ajax rechten fout",
"Cannot create user": "Kan gebruiker niet maken",
"Permission denied": "Geen rechten",
"Permission denied to": "Geen rechten",
"Can not save settings": "Kan instellingen niet opslaan",
"Cannot save preferences": "Kan voorkeuren niet opslaan",
"Thousand Separator and Decimal Mark equal": "Het Duizendtal scheidingsteken mag niet gelijk zijn aan het Honderd tal",
"extension": "{0} extensie ontbreekt",
"option": "Aanbevolen waarde is {0}",
"mysqlSettingError": "EspoCRM vraagde MySQL instelling \"{NAME}\" in te stellen op {VALUE}",
"requiredMariadbVersion": "Uw MariaDB-versie wordt niet ondersteund door EspoCRM, update ten minste naar MariaDB {minVersion}",
"Ajax failed": "Er is een onverwachte fout opgetreden",
"Bad init Permission": "Toestemming geweigerd voor \"{*}\" directory. Stel 775 in op \"{*}\" of voer dit commando gewoon uit in de terminal <pre><b>{C}</b></pre> Bediening is niet toegestaan? Probeer deze: {CSU}",
"permissionInstruction": "<br>Voer dit commando uit in Terminal:<pre><b>\"{C}\"</b></pre>",
"operationNotPermitted": "Operatie is niet toegestaan? Probeer deze eens: <br><br>{CSU}"
},
"systemRequirements": {
"requiredPhpVersion": "PHP versie",
"requiredMysqlVersion": "MySQL Versie",
"host": "Hostnaam",
"dbname": "Database naam",
"user": "Gebruikersnaam",
"writable": "Schrijfbaar",
"readable": "Leesbaar",
"requiredMariadbVersion": "MariaDB-versie"
},
"options": {
"modRewriteTitle": {
"nginx": "<h3>API Fout: EspoCRM API is niet beschikbaar.</h3>",
"default": "<h3>API-fout: EspoCRM API is niet beschikbaar.</h3><br> Mogelijke problemen: uitgeschakeld Rewrite Module. Controleer en activeer de Rewrite Module in uw server (b.v. mod_rewrite in Apache) en .htaccess ondersteuning."
},
"modRewriteInstruction": {
"apache": {
"linux": "<br><br><h4>1. Schakel \"mod_rewrite\" in.</h4>Om <i>mod_rewrite</i> in te schakelen, voert u deze commando's uit in een terminal:<br><br><pre>{APACHE1}</pre><hr><h4>2. Als de vorige stap niet heeft geholpen, probeer dan .htaccess ondersteuning in te schakelen.</h4> Toevoegen/bewerken van de server configuratie instellingen <code>{APACHE2_PATH1}</code> of <code>{APACHE2_PATH2}</code> (or <code>{APACHE2_PATH3}</code>):<br><br><pre>{APACHE2}</pre>\n Voer daarna dit commando uit in een terminal:<br><br><pre>{APACHE3}</pre><hr><h4>3. Als de vorige stap niet heeft geholpen, probeer dan het RewriteBase pad toe te voegen.</h4>Open een bestand <code>{API_PATH}.htaccess</code> en vervang de volgende regel:<br><br><pre>{APACHE4}</pre>To<br><br><pre>{APACHE5}</pre><hr>Voor meer informatie, zie de richtlijn <a href=\"{APACHE_LINK}\" target=\"_blank\">Apache server configuratie voor EspoCRM</a>.<br><br>",
"windows": "<br><br> <h4>1. Zoek het httpd.conf bestand.</h4>Meestal is het te vinden in een map genaamd \"conf\", \"config\" of iets in die trant.<br><br><h4>2. Bewerk het httpd.conf bestand.</h4>In het httpd.conf bestand, verwijder het commentaar van de regel <code>{WINDOWS_APACHE1}</code> (verwijder het pond \"#\" teken van voor de regel).<br><br><h4>3. Controleer andere parameters. </h4>Controleer ook of de lijn <code>ClearModuleList</code> is ongecommentarieerd en zorg ervoor dat de regel <code>AddModule mod_rewrite.c</code> is niet uitgecommentarieerd."
},
"nginx": {
"linux": "<br> Voeg deze code toe aan uw Nginx server config bestand <code>{NGINX_PATH}</code> in de \"server\" sectie:<br><br><pre>{NGINX}</pre> <br> Voor meer informatie, zie de richtlijn <a href=\"{NGINX_LINK}\" target=\"_blank\">Nginx server configuratie voor EspoCRM</a>.<br><br>"
}
}
}
}

View File

@@ -0,0 +1,110 @@
{
"labels": {
"Main page title": "Witaj w EspoCRM",
"Start page title": "Postanowienia Licencji",
"Step1 page title": "Postanowienia Licencji",
"License Agreement": "Postanowienia Licencji",
"I accept the agreement": "Akceptuje postanowienia",
"Step2 page title": "Konfiguracja Bazy Danych",
"Step3 page title": "Ustawienia administratora",
"Step4 page title": "Ustawienia systemu",
"Step5 page title": "Ustawienia SMTP dla poczty wychodzącej",
"Errors page title": "Błędy",
"Finish page title": "Instalacja została ukończona",
"Congratulation! Welcome to EspoCRM": "Gratuluje! EspoCRM zostało pomyślnie zainstalowane.",
"share": "Jeśli lubisz EspoCRM, podziel się nim ze znajomymi. Poinformuj ich o tym produkcie.",
"Installation Guide": "Instrukcja instalacji",
"Locale": "Lokalne",
"Outbound Email Configuration": "Ustawienia poczty wychodzącej",
"Back": "Wróć",
"Next": "Następny",
"Go to EspoCRM": "Idź do EspoCRM",
"Re-check": "Sprawdź jeszcze raz",
"Version": "Wersja",
"Test settings": "Test połączenia z bazą danych",
"Install": "Instaluj",
"Configuration Instructions": "Instrukcje konfiguracji",
"phpVersion": "Wersja PHP",
"requiredMysqlVersion": "Wersja MySQL",
"dbHostName": "Nazwa hosta",
"dbName": "Nazwa Bazy Danych",
"dbUserName": "Nazwa Użytkownika Bazy Danych",
"SetupConfirmation page title": "Wymagania systemowe",
"PHP Configuration": "Ustawienia PHP",
"MySQL Configuration": "Ustawienia bazy danych",
"Permission Requirements": "Zezwolenie",
"Success": "Sukces",
"Fail": "Porażka",
"is recommended": "jest zalecane",
"extension is missing": "brakuje rozszerzenia",
"headerTitle": "Instalacja EspoCRM",
"Crontab setup instructions": "Bez uruchamiania zaplanowanych zadań przychodzące wiadomości e-mail, powiadomienia i przypomnienia nie będą działać. Tutaj możesz przeczytać {SETUP_INSTRUCTIONS}.",
"Setup instructions": "Instrukcji instalacji"
},
"fields": {
"Choose your language": "Wybierz swój język",
"Database Name": "Nazwa Bazy Danych",
"Host Name": "Nazwa hosta",
"Database User Name": "Nazwa Użytkownika Bazy Danych",
"Database User Password": "Hasło Użytkownika Bazy Danych",
"User Name": "Nazwa Użytkownika",
"Password": "Hasło",
"smtpPassword": "Hasło",
"Confirm Password": "Potwierdź hasło",
"From Address": "Z adresu",
"From Name": "Od",
"Is Shared": "Jest Udostępniane",
"Date Format": "Format Daty",
"Time Format": "Format Czasu",
"Time Zone": "Strefa Czasowa",
"First Day of Week": "Pierwszy dzień tygodnia",
"Thousand Separator": "Separator Dziesiętny",
"Decimal Mark": "Znak rozdzielenia",
"Default Currency": "Domyślna waluta",
"Currency List": "Domyślana Lista",
"Language": "Język",
"smtpSecurity": "Zabezpieczenia",
"smtpUsername": "Użytkownik",
"emailAddress": "E-mail"
},
"messages": {
"1045": "Dostęp zabroniony dla użytkownika",
"1049": "Nie znana baza danych",
"2005": "Nieznany MySQL host",
"Some errors occurred!": "Wystąpiły błędy!",
"phpVersion": "Wersja PHP nie jest wspierana przez EspoCRM, proszę wykonać aktualizację do minimalnej wersji PHP {minVersion}",
"requiredMysqlVersion": "Wersja MySQL nie jest wspierana przez EspoCRM, proszę wykonać aktualizację do minimalnej wersji MySQL {minVersion}",
"All Settings correct": "Wszystkie ustawienia są poprawne",
"Failed to connect to database": "Błąd połączenia z bazą danych",
"PHP version": "Wersja PHP",
"You must agree to the license agreement": "Musisz zaakceptować postanowienia licencji",
"Passwords do not match": "Hasło nie pasuje",
"Enable mod_rewrite in Apache server": "Włącz mod_rewrite na serwerze Apache",
"checkWritable error": "Sprawdź zapisane błędy",
"applySett error": "Akceptuj ustawienia błędów",
"Cannot create user": "Nie można utworzyć użytkownika",
"Permission denied": "Dostęp zabroniony",
"Permission denied to": "Dostęp zabroniony",
"Can not save settings": "Nie mogę zapisać ustawień",
"Cannot save preferences": "Nie mogę zapisać preferencji",
"Thousand Separator and Decimal Mark equal": "Separator dziesiętny i znak rozdzielenia nie może być taki sam",
"extension": "Rozszerzenie {0} jest niedostępne",
"option": "Rekomendowaną wartością jest {0}",
"mysqlSettingError": "EspoCRM wymaga aby ustawienie MySQL \"{NAME}\" było zmienione na {VALUE}",
"requiredMariadbVersion": "Twoja wersja MariaDB nie jest obsługiwana przez EspoCRM, zaktualizuj MariaDB co najmniej do {minVersion}",
"Ajax failed": "Wystąpił nieoczekiwany błąd",
"Bad init Permission": "Odmowa dostępu do katalogu „{*}”. Ustaw 775 dla \"{*}\" lub po prostu wykonaj to polecenie w terminalu <pre><b>{C}</b> </pre> Operacja nie jest dozwolona? Spróbuj tego: {CSU}",
"permissionInstruction": "<br> Uruchom to polecenie w Terminalu: <pre> <b> „{C}” </b> </pre>",
"operationNotPermitted": "Operacja nie jest dozwolona? Spróbuj tego: <br> <br> {CSU}\n"
},
"systemRequirements": {
"requiredPhpVersion": "Wersja PHP",
"requiredMysqlVersion": "Wersja MySQL",
"host": "Nazwa hosta",
"dbname": "Nazwa Bazy Danych",
"user": "Nazwa Użytkownika",
"writable": "Zapisywalny",
"readable": "Odczytywalny",
"requiredMariadbVersion": "Wersja MariaDB"
}
}

View File

@@ -0,0 +1,111 @@
{
"labels": {
"Main page title": "Bem vindo ao EspoCRM",
"Start page title": "Contrato de Licença",
"Step1 page title": "Contrato de Licença",
"License Agreement": "Contrato de Licença",
"I accept the agreement": "Eu aceito o contrato de licença",
"Step2 page title": "Configurações do banco de dados",
"Step3 page title": "Configurações administrativas",
"Step4 page title": "Configurações do sistema",
"Step5 page title": "Configurações SMTP para envio de e-mails",
"Errors page title": "Erros",
"Finish page title": "Instalação completa",
"Congratulation! Welcome to EspoCRM": "Parabéns! O EspoCRM foi instalado com sucesso.",
"Installation Guide": "Guia de Instalação",
"Locale": "Idioma",
"Outbound Email Configuration": "Configurações dos e-mails de saída",
"Start": "Iniciar",
"Back": "Voltar",
"Next": "Avançar",
"Go to EspoCRM": "Ir para o EspoCRM",
"Re-check": "Verificar novamente",
"Test settings": "Testar Conexão",
"phpVersion": "Versão do PHP",
"requiredMysqlVersion": "Versão do MySQL",
"dbHostName": "Nome de anfitrião",
"dbName": "Nome do banco de dados",
"SetupConfirmation page title": "Requisitos de sistema",
"PHP Configuration": "Configurações do PHP",
"MySQL Configuration": "Configurações do banco de dados",
"Permission Requirements": "Permissões",
"Success": "Sucesso",
"Fail": "Falha",
"is recommended": "é recomendado",
"extension is missing": "faltando extensão",
"headerTitle": "Instalação EspoCRM",
"Crontab setup instructions": "Sem executar os trabalhos agendados de emails de entrada as notificações e lembretes não funcionarão. Aqui você pode ler {SETUP_INSTRUCTIONS}.",
"Setup instructions": "instruções de configuração"
},
"fields": {
"Choose your language": "Escolha seu idioma",
"Database Name": "Nome do banco de dados",
"Host Name": "Nome de anfitrião",
"Port": "Porta",
"smtpPort": "Porta",
"Database User Name": "Usuário do banco de dados",
"Database User Password": "Senha",
"Database driver": "Driver do banco de dados",
"User Name": "Nome de Usuário",
"Password": "Senha",
"smtpPassword": "Senha",
"Confirm Password": "Confirme sua senha",
"From Address": "E-mail do remetente",
"From Name": "Nome do remetente",
"Is Shared": "Compartilhado",
"Date Format": "Formato da data",
"Time Format": "Formato da hora",
"Time Zone": "Fuso horário",
"First Day of Week": "Primeiro dia da semana",
"Thousand Separator": "Separador de milhar",
"Decimal Mark": "Marcador decimal",
"Default Currency": "Moeda padrão",
"Currency List": "Lista de moedas",
"Language": "Idioma",
"smtpServer": "Servidor",
"smtpAuth": "Autenticação",
"smtpSecurity": "Segurança",
"smtpUsername": "Usuário",
"emailAddress": "E-mail"
},
"messages": {
"1045": "Acesso do usuário negado",
"The PHP extension was not found...": "The <b>{extName}</b> PHP extension was not found...",
"All Settings correct": "Todas as configurações estão corretas",
"PHP version": "Versão do PHP",
"Cannot create user": "Cannot create user",
"Permission denied": "Permissão negada",
"Permission denied to": "Permissão negada",
"requiredMariadbVersion": "Sua versão do MariaDB não é compatível com o EspoCRM, atualize para o MariaDB {minVersion} pelo menos",
"Ajax failed": "Um erro inesperado ocorreu",
"Bad init Permission": "Permissão negada para o diretório \"{*}\". Por favor, defina 775 para \"{*}\" ou apenas execute este comando no terminal <pre><b>{C}</b></pre> A operação não é permitida? Experimente este: {CSU}",
"permissionInstruction": "<br>Execute este comando no Terminal:<pre><b>\"{C}\"</b></pre>",
"operationNotPermitted": "A operação não é permitida? Experimente este: <br><br>{CSU}"
},
"systemRequirements": {
"requiredPhpVersion": "Versão do PHP",
"requiredMysqlVersion": "Versão do MySQL",
"host": "Nome de anfitrião",
"dbname": "Nome do banco de dados",
"user": "Nome de Usuário",
"readable": "Permite Leitura",
"requiredMariadbVersion": "Versão MariaDB"
},
"options": {
"modRewriteTitle": {
"apache": "<h3>Erro de API: a API do EspoCRM não está disponível.</h3><br>Faça apenas os passos necessários. Após cada etapa, verifique se o problema foi resolvido.",
"nginx": "<h3>Erro de API: a API do EspoCRM não está disponível.</h3>",
"microsoft-iis": "<h3>Erro de API: a API do EspoCRM não está disponível.</h3><br> Possível problema: \"URL Rewrite\" desabilitado. Por favor, verifique e habilite o módulo \"URL Rewrite\" no servidor IIS",
"default": "<h3>Erro de API: a API do EspoCRM não está disponível.</h3><br> Possíveis problemas: Módulo de reescrita desabilitado. Por favor, verifique e habilite o Módulo Rewrite em seu servidor (ex: mod_rewrite no Apache) e suporte .htaccess."
},
"modRewriteInstruction": {
"apache": {
"linux": "\n<br><br><h4>1. Habilite \"mod_rewrite\".</h4>Para habilitar <i>mod_rewrite</i>, execute estes comandos num terminal:<br><br><pre>{APACHE1}</pre><hr><h4>2. Se a etapa anterior não ajudar, tente habilitar o suporte a .htaccess.</h4> Adicionar/editar as configurações do servidor <code>{APACHE2_PATH1}</code> ou <code>{APACHE2_PATH2}</code> (or <code>{APACHE2_PATH3}</code>):<br><br><pre>{APACHE2}</pre>\n Depois execute este comando em um terminal:<br><br><pre>{APACHE3}</pre><hr><h4>3. Se a etapa anterior não ajudou, tente adicionar o caminho RewriteBase.</h4>Abra um arquivo <code>{API_PATH}.htaccess</code> e substitua a seguinte linha:<br><br><pre>{APACHE4}</pre>To<br><br><pre>{APACHE5}</pre><hr>Para mais informações acesse a diretriz <a href=\"{APACHE_LINK}\" target=\"_blank\">Configuração do servidor Apache para EspoCRM</a>.<br><br>",
"windows": "<br><br> <h4>1. Encontre o arquivo httpd.conf.</h4>Normalmente ele pode ser encontrado em uma pasta chamada \"conf\", \"config\" ou algo nesse sentido.<br><br><h4>2. Edite o arquivo httpd.conf.</h4> Dentro do arquivo httpd.conf descomente a linha <code>{WINDOWS_APACHE1}</code> (remova o sinal sustenido '#' da frente da linha).<br><br><h4>3. Verifique outros parâmetros.</h4>Verifique também se a linha <code>ClearModuleList</code> está descomentada e certifique-se de que a linha <code>AddModule mod_rewrite.c</code> não está comentada."
},
"nginx": {
"linux": "<br> Adicione este código ao seu arquivo de configuração do servidor Nginx <code>{NGINX_PATH}</code> na da seção \"server\":<br><br><pre>{NGINX}</pre> <br> Para mais informações acesse a diretriz <a href=\"{NGINX_LINK}\" target=\"_blank\">Configuração do servidor Nginx para EspoCRM</a>.<br><br>"
}
}
}
}

View File

@@ -0,0 +1,137 @@
{
"labels": {
"Main page title": "Bem Vindo ao EspoCRM",
"Start page title": "Contrato de licença",
"Step1 page title": "Contrato de licença",
"License Agreement": "Contrato de licença",
"I accept the agreement": "Eu aceito o acordo",
"Step2 page title": "Configuração da base de dados",
"Step3 page title": "Configuração do Administrador",
"Step4 page title": "Configuração de sistema",
"Step5 page title": "Configurações SMTP para emails enviados",
"Errors page title": "Erros",
"Finish page title": "Instalação completa",
"Congratulation! Welcome to EspoCRM": "Parabéns! EspoCRM configurado corretamente",
"More Information": "Para mais informações, visite o nosso {BLOG}, siga-nos no {TWITTER}. <br> <br> Se tiver alguma sugestão ou dúvida, por favor, pergunte no {FORUM}.",
"share": "Se gosta de EspoCRM, partilhe-a com os seus amigos. Deixe-os saber sobre este produto.",
"Installation Guide": "Guia de Instalação",
"Locale": "Localidade",
"Outbound Email Configuration": "Configuração de email de saída",
"Start": "Começar",
"Back": "Anterior",
"Next": "Seguinte",
"Go to EspoCRM": "Ir para EspoCRM",
"Re-check": "Verificar",
"Version": "Versão",
"Test settings": "Testar conexão",
"Database Settings Description": "Digite suas informações de conexão da base de dados MySQL (nome do host, nome de utilizador e senha). Pode especificar a porta do servidor para o nome do host como localhost: 3306.",
"Install": "Instalar",
"Configuration Instructions": "Instruções de configuração",
"phpVersion": "Versão PHP",
"dbHostName": "Nome do Host",
"dbName": "Nome de base de dados",
"dbUserName": "Utilizador de base de dados",
"OK": "Ok",
"SetupConfirmation page title": "Requisitos de Sistema",
"PHP Configuration": "Configurações PHP",
"MySQL Configuration": "Configurações base de dados",
"Permission Requirements": "Permissões",
"Success": "Sucesso",
"Fail": "Falha",
"is recommended": "recomendado",
"extension is missing": "Extensão em falta",
"headerTitle": "Instalação do EspoCRM",
"Crontab setup instructions": "Sem executar e-mails de entrada de trabalhos agendados, notificações e lembretes não funcionarão. Aqui você pode ler {SETUP_INSTRUCTIONS}",
"Setup instructions": "Intrições de configuração"
},
"fields": {
"Choose your language": "Escolha o idioma",
"Database Name": "Nome da base de dados",
"Host Name": "Nome do host",
"Port": "Porta",
"smtpPort": "Porta",
"Database User Name": "Utilizador de base de dados",
"Database User Password": "Senha de utilizador da base de dados",
"Database driver": "Driver da base de dados",
"User Name": "Utilizador",
"Password": "Senha",
"smtpPassword": "Senha",
"Confirm Password": "Confirme a sua senha",
"From Address": "A partir do endereço",
"From Name": "A partir do nome",
"Is Shared": "Partilhado",
"Date Format": "Formato de data",
"Time Format": "Formato de hora",
"Time Zone": "Fuso horário",
"First Day of Week": "Primeiro dia da semana",
"Thousand Separator": "Separador dos milhares",
"Decimal Mark": "Marca decimal",
"Default Currency": "Moeda padrão",
"Currency List": "Lista de moedas",
"Language": "Idioma",
"smtpServer": "Servidor",
"smtpAuth": "Autenticação",
"smtpSecurity": "Segurança",
"smtpUsername": "Utilizador"
},
"messages": {
"1045": "Acesso negado ao utilizador",
"1049": "Base de dados desconhecida",
"2005": "Host do servidor MySQL desconhecido",
"Some errors occurred!": "Ocorreram alguns erros!",
"phpVersion": "A sua versão de PHP não é suportada pelo EspoCRM, por favor atualize para PHP {minVersion}, pelo menos",
"requiredMysqlVersion": "A sua versão de MySQL não é suportada pelo EspoCRM, por favor atualize para MySQL {minVersion}, pelo menos",
"The PHP extension was not found...": "Erro PHP: Extensão <b>{exName}</b> não encontrada.",
"All Settings correct": "Todas as configurações estão corretas",
"Failed to connect to database": "Falha a conectar à base de dados",
"PHP version": "Versão PHP",
"You must agree to the license agreement": "Deve concordar com o contrato de licença",
"Passwords do not match": "As senhas não coincidem",
"Enable mod_rewrite in Apache server": "Habilite mod_rewrite no servidor Apache",
"checkWritable error": "Erro checkWritable",
"applySett error": "Erro applySett",
"buildDatabase error": "Erro buildDatabase",
"createUser error": "Erro createUser",
"checkAjaxPermission error": "Erro checkAjaxPermission",
"Cannot create user": "Não foi possível criar utilizador",
"Permission denied": "Permissão recusada",
"Permission denied to": "Permissão recusada",
"Can not save settings": "Não é possível salvar configurações",
"Cannot save preferences": "Não é possível salvar as preferências",
"Thousand Separator and Decimal Mark equal": "Separados dos mulheres e a marca das casas decimais não pode ser igual",
"extension": "A extensão {0} está em falta",
"option": "O valor recomendado é {0}",
"mysqlSettingError": "EspoCRM precisa que o valor MySQL \"{NAME}\" esteja configurado para {VALUE}",
"requiredMariadbVersion": "A sua versão MariaBD não é suportada pelo EspoCRM, por favor atualize para MariaDB {minVersion}, pelo menos",
"Ajax failed": "Um erro inesperado aconteceu",
"Bad init Permission": "Permissão negada para o diretório \"{*}\". Por favor, defina 775 para \"{*}\" ou apenas execute este comando no terminal <pre><b>{C}</b></pre> Operação não permitida? Experimente este: {CSU}",
"permissionInstruction": "<br>Execute este comando no Terminal:<pre><b>\"{C}\"</b></pre>",
"operationNotPermitted": "Operação não permitida? Tente esta: <br><br>{CSU}"
},
"systemRequirements": {
"requiredPhpVersion": "Versão PHP",
"requiredMysqlVersion": "Versão MySQL",
"host": "Nome do Host",
"dbname": "Nome da Base de Dados",
"user": "Utilizador",
"readable": "Legível",
"requiredMariadbVersion": "Versão MariaDB"
},
"options": {
"modRewriteTitle": {
"apache": "<h3>Erro API: EspoCRM API está indisponível.</h3><br> Faça os passos necessários. Depois de cada passo, verifique se o problema está resolvido.",
"nginx": "<h3>Erro API: EspoCRM API está indisponível.</h3>",
"microsoft-iis": "<h3>Erro API: EspoCRM API está indisponível.</h3><br> Problema possível: \"URL Rewrite\" desativado. Por favor verifique e ative o Módulo \"URL Rewrite\"no servidor IIS. ",
"default": "<h3>Erro API: EspoCRM API está indisponível.</h3><br> Problema possível: Módulo Rewrite desativado. Por favor verifique e ative o Módulo Rewrite no seu servidor (ex. mod_rewrite in Apache) e suporte .htaccess"
},
"modRewriteInstruction": {
"apache": {
"linux": "<br><br><h4>1. Habilite \"mod_rewrite\".</h4>Para habilitar <i>mod_rewrite</i>, execute estes comandos em um terminal:<br><br><pre> {APACHE1}</pre><hr><h4>2. Se a etapa anterior não ajudar, tente ativar o suporte a .htaccess.</h4> Adicione/edite as configurações do servidor <code>{APACHE2_PATH1}</code > ou <code>{APACHE2_PATH2}</code> (ou <code>{APACHE2_PATH3}</code>):<br><br><pre>{APACHE2}</pre>\n Depois execute este comando em um terminal:<br><br><pre>{APACHE3}</pre><hr><h4>3. Se a etapa anterior não ajudou, tente adicionar o caminho RewriteBase.</h4>Abra um arquivo <code >{API_PATH}.htaccess</code> e substitua a seguinte linha:<br><br><pre>{APACHE4}</pre>To<br><br><pre>{APACHE5}</pre>< hr>Para obter mais informações, visite a diretriz <a href=\"{APACHE_LINK}\" target=\"_blank\">Configuração do servidor Apache para EspoCRM</a>.<br><br>",
"windows": "<br><br> <h4>1. Encontre o arquivo httpd.conf.</h4>Geralmente ele pode ser encontrado em uma pasta chamada \"conf\", \"config\" ou algo parecido.< br><br><h4>2. Edite o arquivo httpd.conf.</h4> Dentro do arquivo httpd.conf, descomente a linha <code>{WINDOWS_APACHE1}</code> (remova o sinal de libra '#' de frente da linha).<br><br><h4>3. Verifique outros parâmetros.</h4>Verifique também se a linha <code>ClearModuleList</code> não está comentada e certifique-se de que a linha <code>AddModule mod_rewrite.c</code> não está comentado.\n"
},
"nginx": {
"linux": "<br> Adicione este código ao arquivo de configuração do servidor Nginx <code>{NGINX_PATH}</code> dentro da seção \"server\":<br><br><pre>{NGINX}</pre> <br> Para obter mais informações, visite a diretriz <a href=\"{NGINX_LINK}\" target=\"_blank\">configuração do servidor Nginx para EspoCRM</a>.<br><br>"
}
}
}
}

View File

@@ -0,0 +1,102 @@
{
"labels": {
"Main page title": "Bine ați venit pe EspoCRM",
"Start page title": "Acord de Licență",
"Step1 page title": "Acord de Licență",
"License Agreement": "Acord de Licență",
"I accept the agreement": "Sunt de acord",
"Step2 page title": "Configurare Bază de Date",
"Step3 page title": "Setări Administrator",
"Step4 page title": "Setări Sistem",
"Step5 page title": "Setări SMTP pentru trimitere email-uri",
"Errors page title": "Erori",
"Finish page title": "Instalare finalizată",
"Congratulation! Welcome to EspoCRM": "Felicitări! EspoCRM a fost instalat cu succes.",
"More Information": "Pentru mai multe informații, vizitați {BLOG}, urmați-ne pe {TWITTER}. <br><br> Dacă aveți sugestii sau întrebări, vă rugăm să întrebați pe {FORUM}.",
"share": "Dacă vă place EspoCRM, împărtășiți-l cu prietenii. Spuneți-le despre acest produs.",
"twitter": "twiter",
"Installation Guide": "Instrucțiuni de instalare",
"Locale": "Localizare",
"Outbound Email Configuration": "Configurări trimitere email",
"Back": "Înapoi",
"Next": "Înainte",
"Go to EspoCRM": "Mergi la EspoCRM",
"Re-check": "Re-verificare",
"Version": "Versiunea",
"Test settings": "Testare Conexiune",
"Database Settings Description": "Introduceți informațiile despre conexiunea bazei de date MySQL (nume de gazdă, nume de utilizator și parolă). Puteți specifica portul de server pentru numele de gazdă, precum localhost: 3306.",
"Install": "Instalare",
"Configuration Instructions": "Instrucțiuni de Configurare",
"phpVersion": "Versiune PHP",
"requiredMysqlVersion": "Versiune MySQL",
"dbHostName": "Numele Gazdei",
"dbName": "Numele Bazei de Date",
"dbUserName": "Nume Utilizator Bază de Date",
"SetupConfirmation page title": "Cerințe de sistem",
"PHP Configuration": "Setări PHP",
"Permission Requirements": "Permisiune"
},
"fields": {
"Choose your language": "Alege Limba",
"Database Name": "Numele Bazei de Date",
"Host Name": "Numele Gazdei",
"Database User Name": "Nume Utilizator Bază de Date",
"Database User Password": "Parola Bazei de Date",
"Database driver": "Driver Bază de Date",
"User Name": "Nume Utilizator",
"Password": "Parolă",
"smtpPassword": "Parolă",
"Confirm Password": "Confirmare Parolă",
"From Address": "De la adresa",
"From Name": "De la",
"Is Shared": "Este Partajat",
"Date Format": "Format Data",
"Time Format": "Format Oră",
"Time Zone": "Fus Orar",
"First Day of Week": "Prima zi a săptămânii",
"Thousand Separator": "Separator mii",
"Decimal Mark": "Marcaj zecimal",
"Default Currency": "Valută implicită",
"Currency List": "Listă valute",
"Language": "Limbă",
"smtpAuth": "Autorizare",
"smtpSecurity": "Securitate",
"smtpUsername": "Nume Utilizator"
},
"messages": {
"1045": "Acces nepermis pentru utilizatorul",
"1049": "Baza de Date necunoscută",
"2005": "Server MySQL necunoscut",
"Some errors occurred!": "Am apărut erori!",
"phpVersion": "Versiunea dumneavoastră de PHP nu este acceptată de EspoCRM, vă rugăm să vă actualizați măcar la versiunea PHP {minVersion}",
"requiredMysqlVersion": "Versiunea dumneavoastră de MySQL nu este acceptată de EspoCRM, vă rugăm să vă actualizați măcar la versiunea MySQL {minVersion}",
"The PHP extension was not found...": "Eroare PHP: Extensie <b>{extName}</b> nu a fost găsit.",
"All Settings correct": "Toate setarile sunt corecte",
"Failed to connect to database": "Nu s-a reușit conectarea la Baza de Date",
"PHP version": "Versiune PHP",
"You must agree to the license agreement": "Trebuie să acceptați acordul de licență",
"Passwords do not match": "Parola nu se potrivește",
"Enable mod_rewrite in Apache server": "Activează mod_rewrite în server-ul Apache",
"checkWritable error": "Eroare la verificarea drepturilor de scriere",
"applySett error": "Eroare la aplicarea setărilor",
"buildDatabase error": "Eroare la crearea Bazei de Date",
"createUser error": "Eroare la crearea utilizatorului",
"checkAjaxPermission error": "Eroare la verificarea permisiunilor Ajax",
"Cannot create user": "Utilizatorul nu poate fi creat",
"Permission denied": "Permisiune respinsă",
"Permission denied to": "Permisiune respinsă",
"Can not save settings": "Setările nu pot fi salvate",
"Cannot save preferences": "Preferințele nu pot fi salvate",
"Thousand Separator and Decimal Mark equal": "Separatoarele pentru mii și zecimale nu pot fi aceleași",
"extension": "{0} lipsește extensia",
"option": "Valoarea recomandată este {0}",
"mysqlSettingError": "EspoCRM cere ca setarea MySQL \\\\ \"{NAME} \" să fie setată la {VALUE}"
},
"systemRequirements": {
"requiredPhpVersion": "Versiune PHP",
"requiredMysqlVersion": "Versiune MySQL",
"host": "Numele Gazdei",
"dbname": "Numele Bazei de Date",
"user": "Nume Utilizator"
}
}

View File

@@ -0,0 +1,147 @@
{
"labels": {
"Main page title": "Добро пожаловать в EspoCRM",
"Start page title": "Лицензионное соглашение",
"Step1 page title": "Лицензионное соглашение",
"License Agreement": "Лицензионное соглашение",
"I accept the agreement": "Я принимаю условия соглашения",
"Step2 page title": "Конфигурация БД",
"Step3 page title": "Настройка учетной записи администратора",
"Step4 page title": "Системные настройки",
"Step5 page title": "Настройки SMTP для исходящей эл. почты",
"Errors page title": "Ошибки",
"Finish page title": "Установка завершена",
"Congratulation! Welcome to EspoCRM": "Поздравляем! EspoCRM был успешно установлен.",
"More Information": "Для получения дополнительной информации, пожалуйста, посетите наш {BLOG}, следуйте за нами в {TWITTER}.<br><br>Если у Вас есть какие-либо предложения или вопросы, пожалуйста, обратитесь на {FORUM}.",
"share": "Если Вам понравился EspoCRM, расскажите об этом Вашими друзьями. Пусть они узнают об этом продукте.",
"blog": "блог",
"twitter": "твиттер",
"forum": "форум",
"Installation Guide": "Инструкция по установке",
"admin": "админ",
"localhost": "Локальный хост",
"port": "3306 - адрес порта",
"Locale": "Местный",
"Outbound Email Configuration": "Настройка исходящей эл. почты",
"SMTP": "SMTP - протокол передачи эл.почты",
"Start": "Начать",
"Back": "Назад",
"Next": "Далее",
"Go to EspoCRM": "Перейти к EspoCRM",
"Re-check": "Перепроверить",
"Version": "Версия",
"Test settings": "Проверка соединения",
"Database Settings Description": "Введите информацию для подключения к базе данных MySQL (имя сервера, имя пользователя и пароль). Вы можете указать порт сервера, например localhost:3306.",
"Install": "Установить",
"Configuration Instructions": "Инструкции по конфигурации",
"phpVersion": "Версия PHP",
"dbHostName": "Сервер БД",
"dbName": "Имя БД",
"dbUserName": "Имя пользователя БД",
"OK": "ОК",
"SetupConfirmation page title": "Системные требования",
"PHP Configuration": "Конфигурация PHP",
"MySQL Configuration": "Конфигурация Базы Данных",
"Permission Requirements": "Права доступа",
"Success": "Успешно",
"Fail": "Сбой",
"is recommended": "рекомендовано",
"extension is missing": "расширение отсутствует",
"headerTitle": "Установка EspoCRM",
"Crontab setup instructions": "Без запущеного планировщика заданий входящие электронные письма, уведомления и напоминания не будут работать. Здесь вы можете прочитать {SETUP_INSTRUCTIONS}.",
"Setup instructions": "инструкции по настройке"
},
"fields": {
"Choose your language": "Выберите ваш язык",
"Database Name": "Имя БД",
"Host Name": "Сервер",
"Port": "Порт",
"smtpPort": "Порт",
"Database User Name": "Имя пользователя БД",
"Database User Password": "Пароль пользователя БД",
"Database driver": "Драйвер БД",
"User Name": "Имя пользователя",
"Password": "Пароль",
"smtpPassword": "Пароль",
"Confirm Password": "Подтвердите пароль",
"From Address": "Адрес отправителя",
"From Name": "Имя отправителя",
"Is Shared": "Может использоваться всеми пользователями",
"Date Format": "Формат даты",
"Time Format": "Формат времени",
"Time Zone": "Часовой пояс",
"First Day of Week": "Первый день недели",
"Thousand Separator": "Тысячный разделитель",
"Decimal Mark": "Десятичный разделитель",
"Default Currency": "Валюта по умолчанию",
"Currency List": "Список валют",
"Language": "Язык",
"smtpServer": "Сервер SMTP",
"smtpAuth": "Аутентификация",
"smtpSecurity": "Безопасность",
"smtpUsername": "Имя пользователя",
"emailAddress": "Адрес эл. почты",
"Platform": "Платформа"
},
"messages": {
"1045": "Пользователю отказано в доступе",
"1049": "Неизвестная БД",
"2005": "Неизвестный MySQL сервер",
"Some errors occurred!": "Произошло несколько ошибок!",
"phpVersion": "Установленная версия PHP не поддерживается EspoCRM, обновите РНР по крайней мере до версии {MinVersion}",
"requiredMysqlVersion": "Установленная версия MySQL не поддерживается EspoCRM, обновите MySQL по крайней мере до версии {minVersion}",
"The PHP extension was not found...": "Ошибка PHP: расширение <b>{extName}</b> не найдено.",
"All Settings correct": "Все настройки верны",
"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",
"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": "Тысячный разделитель не может быть таким же как и десятичный разделитель",
"extension": "{0} расширение отсутствует",
"option": "Рекомендуемое значение {0}",
"mysqlSettingError": "Для EspoCRM требуется, чтобы значением \"{NAME}\" являлось {VALUE}",
"requiredMariadbVersion": "Ваша версия MariaDB не поддерживается EspoCRM, пожалуйста, обновите MariaDB хотя бы к {minVersion}",
"Ajax failed": "Произошла непредвиденная ошибка",
"Bad init Permission": "В доступе к каталогу \"{*}\" отказано. Пожалуйста, установите 775 для \"{*}\" или просто выполните эту команду в терминале <pre><b>{C}</b></pre> Операция запрещена? Попробуйте это: {CSU}",
"permissionInstruction": "<br>Запустите эту команду в Терминале:<pre><b>\"{C}\"</b></pre>",
"operationNotPermitted": "Операция запрещена? Попробуйте это: <br><br>{CSU}"
},
"systemRequirements": {
"requiredPhpVersion": "Версия PHP",
"requiredMysqlVersion": "Версия MySQL",
"host": "Сервер",
"dbname": "Имя БД",
"user": "Имя пользователя",
"writable": "С доступом записи",
"readable": "С доступом чтения",
"requiredMariadbVersion": "Версия MariaDB"
},
"options": {
"modRewriteTitle": {
"apache": "<h3>Ошибка API: EspoCRM API недоступен.</h3><br> Выполните только необходимые действия. После каждого шага проверяйте, решена ли проблема.",
"nginx": "<h3>Ошибка API: API EspoCRM недоступен.</h3>",
"microsoft-iis": "<h3>Ошибка API: EspoCRM API недоступен.</h3><br> Возможная проблема: отключен модуль \"URL Rewrite\". Пожалуйста, проверьте и включите модуль \"URL Rewrite\" на сервере IIS",
"default": "<h3>Ошибка API: EspoCRM API недоступен.</h3><br> Возможные проблемы: отключен модуль Rewrite. Пожалуйста, проверьте и включите модуль Rewrite в вашем сервере (например, mod_rewrite в Apache) и поддержку .htaccess."
},
"modRewriteInstruction": {
"apache": {
"linux": "<br><br><h4>1. Включите \"mod_rewrite\".</h4> Чтобы включить <i>mod_rewrite</i>, выполните эти команды в терминале:<br><br><pre>{APACHE1}</pre><hr><h4>2. Если предыдущий шаг не помог, попробуйте включить поддержку .htaccess.</h4> Добавьте/отредактируйте настройки конфигурации сервера <code>{APACHE2_PATH1}</code> или <code>{APACHE2_PATH2}</code> (или <code>{APACHE2_PATH3}</code>):<br><br><pre>{APACHE2}</pre>.\n После этого выполните эту команду в терминале:<br><br><pre>{APACHE3}</pre><hr><h4>3. Если предыдущий шаг не помог, попробуйте добавить путь RewriteBase.</h4>Откройте файл <code>{API_PATH}.htaccess</code> и замените следующую строку:<br><br><pre>{APACHE4}</pre>To<br><br><pre>{APACHE5}</pre><hr>Для получения дополнительной информации посетите руководство <a href=\"{APACHE_LINK}\" target=\"_blank\">Настройка сервера Apache для EspoCRM</a>.<br><br>",
"windows": "<br><br> <h4>1. Найдите файл httpd.conf.</h4> Обычно его можно найти в папке под названием \"conf\", \"config\" или что-то в этом роде.<br><br><h4>2. Отредактируйте файл httpd.conf.</h4> Внутри файла httpd.conf откомментируйте строку <code>{WINDOWS_APACHE1}</code> (уберите знак фунта '#' перед строкой).<br><br><h4>3. Проверьте остальные параметры.</h4> Также проверьте, не закомментирована ли строка <code>ClearModuleList</code> и убедитесь, что строка <code>AddModule mod_rewrite.c</code> не закомментирована.\n"
},
"nginx": {
"linux": "<br> Добавьте этот код в файл конфигурации сервера Nginx <code>{NGINX_PATH}</code> внутри секции \"server\":<br><br><pre>{NGINX}</pre> <br> Для получения дополнительной информации посетите руководство <a href=\"{NGINX_LINK}\" target=\"_blank\">Конфигурация сервера Nginx для EspoCRM</a>.<br><br>"
}
}
}
}

View File

@@ -0,0 +1,100 @@
{
"labels": {
"Main page title": "Vitajte v EspoCRM",
"Start page title": "Licenčné podmienky",
"Step1 page title": "Licenčné podmienky",
"License Agreement": "Licenčné podmienky",
"I accept the agreement": "Prijímam licenčné podmienky",
"Step2 page title": "Konfigurácia databázy",
"Step3 page title": "Nastavenie administrátora",
"Step4 page title": "Systémové nastavenia",
"Step5 page title": "SMTP nastavenia pre odchádzajúcu poštu",
"Errors page title": "Chyby",
"Finish page title": "Inštalácia je ukončená",
"Congratulation! Welcome to EspoCRM": "Gratulujeme! EspoCRM bolo úspešne nainštalované.",
"More Information": "Pre viac informácií, prosím navštívte náš {BLOG}, sledujde nás na {TWITTER}.<br><br>Ak máte nejaké návrhy alebo otázky, pýtajte sa na {FORUM}.",
"share": "Ak sa Vám EspoCRM páči, povedzte to priateľom. Dajte im vediet o tomto produkte.",
"forum": "fórum",
"Installation Guide": "Inštalačný návod",
"Locale": "Národné nastavenia",
"Outbound Email Configuration": "Konfigurácia odchádzajúcej pošty",
"Start": "Štart",
"Back": "Späť",
"Next": "Ďalej",
"Go to EspoCRM": "Choď na EspoCRM",
"Re-check": "Zopakovať kontrolu",
"Version": "Verzia",
"Test settings": "Test spojenia",
"Database Settings Description": "Vložte informáciu o pripojení na MySQL databázu (názov servera, používateľské meno a heslo). Môžete uviesť port za názvom servera takto: localhost:3306.",
"Install": "Inštalovať",
"Configuration Instructions": "Konfiguračné inštrukcie",
"phpVersion": "Verzia PHP",
"requiredMysqlVersion": "Verzia MySQL",
"dbHostName": "Názov servera",
"dbName": "Názov databázy",
"dbUserName": "Meno používateľa databázy",
"Permission Requirements": "Povolenie"
},
"fields": {
"Choose your language": "Vyberte jazyk",
"Database Name": "Názov databázy",
"Host Name": "Názov servera",
"Database User Name": "Meno používateľa databázy ",
"Database User Password": "Heslo používateľa databázy ",
"Database driver": "Databázový ovládač",
"User Name": "Používateľské meno",
"Password": "Heslo",
"smtpPassword": "Heslo",
"Confirm Password": "Potvrďte heslo",
"From Address": "Adresa odosielateľa",
"From Name": "Meno odosielateľa",
"Is Shared": "Je zdieľaný",
"Date Format": "Formát dátumu",
"Time Format": "Formát času",
"Time Zone": "Časová zóna",
"First Day of Week": "Prvý deň týždňa",
"Thousand Separator": "Oddeľovač tisícov",
"Decimal Mark": "Oddeľovač desatinných miest",
"Default Currency": "Predvolená mena",
"Currency List": "Zoznam mien",
"Language": "Jazyk",
"smtpSecurity": "Bezpečnosť",
"smtpUsername": "Používateľské meno"
},
"messages": {
"1045": "Prístup zamietnutý pre daného používateľa",
"1049": "Neznáma databáza",
"2005": "Neznámy MySQL server",
"Some errors occurred!": "Vyskytli sa nejaké chyby!",
"phpVersion": "Vaša verzia PHP nie je podporovaná EspoCRM, prosím nainštalujte PHP minimálne verziu {minVersion} ",
"requiredMysqlVersion": "Vaša verzia MySQL nie je podporovaná EspoCRM, prosím nainštalujte minimálne verziu {minVersion}",
"The PHP extension was not found...": "Chyba PHP: Rozširenie <b>{extName}</b> sa nenašlo.",
"All Settings correct": "Všetky nastavenia sú správne",
"Failed to connect to database": "Zlyhalo spojenie s databázou",
"PHP version": "Verzia PHP",
"You must agree to the license agreement": "Musíte súhlasiť s licenčnými podmienkami",
"Passwords do not match": "Heslá nie sú rovnaké",
"Enable mod_rewrite in Apache server": "Povoľte mod_rewrite v serveri Apache",
"checkWritable error": "chyba checkWritable",
"applySett error": "chyba applySett",
"buildDatabase error": "chyba buildDatabase",
"createUser error": "chyba createUser",
"checkAjaxPermission error": "chyba checkAjaxPermission",
"Cannot create user": "Nepodarilo sa vytvoriť používateľa",
"Permission denied": "Prístup zakázaný",
"Permission denied to": "Prístup zakázaný",
"Can not save settings": "Nastavenia sa nepodarilo uložiť",
"Cannot save preferences": "Nastavenia sa nepodarilo uložiť",
"Thousand Separator and Decimal Mark equal": "Oddeľovač tisícov a desatinných miest nesmú byť rovnaké",
"extension": "{0} rozšírenie chýba",
"option": "Odporúčaná hodnota je {0}",
"mysqlSettingError": "EspoCRM vyžaduje aby nastavenie MySQL \"{NAME}\" bolo nastavené na {VALUE}"
},
"systemRequirements": {
"requiredPhpVersion": "Verzia PHP",
"requiredMysqlVersion": "Verzia MySQL",
"host": "Názov servera",
"dbname": "Názov databázy",
"user": "Používateľské meno"
}
}

View File

@@ -0,0 +1,142 @@
{
"labels": {
"Main page title": "Dobrodošli v EspoCRM",
"Start page title": "Licenčna pogodba",
"Step1 page title": "Licenčna pogodba",
"License Agreement": "Licenčna pogodba",
"I accept the agreement": "sprejemam Sporazum",
"Step2 page title": "Konfiguracija baze podatkov",
"Step3 page title": "Skrbniška nastavitev",
"Step4 page title": "Sistemske nastavitve",
"Step5 page title": "Nastavitve SMTP za odhodno e-pošto",
"Errors page title": "Napake",
"Finish page title": "Namestitev je končana",
"Congratulation! Welcome to EspoCRM": "čestitke! EspoCRM je bil uspešno nameščen.",
"More Information": "Za več informacij obiščite naš {BLOG}, spremljajte nas na {TWITTER}.<br><br>Če imate kakršne koli predloge ali vprašanja, jih vprašajte na {FORUM}.",
"share": "Če vam je EspoCRM všeč, ga delite s prijatelji. Obvestite jih o tem izdelku.",
"Installation Guide": "Navodila za namestitev",
"localhost": "lokalni gostitelj",
"Outbound Email Configuration": "Konfiguracija odhodne e-pošte",
"Start": "Začetek",
"Back": "Nazaj",
"Next": "Naslednji",
"Go to EspoCRM": "Pojdite na EspoCRM",
"Re-check": "Ponovno preverite",
"Version": "Različica",
"Test settings": "Testna povezava",
"Database Settings Description": "Vnesite informacije o povezavi z bazo podatkov MySQL (ime gostitelja, uporabniško ime in geslo). Določite lahko vrata strežnika za ime gostitelja, kot je localhost:3306.",
"Install": "Namestite",
"Configuration Instructions": "Navodila za konfiguracijo",
"phpVersion": "PHP različica",
"requiredMysqlVersion": "Različica MySQL",
"dbHostName": "Ime gostitelja",
"dbName": "Ime baze podatkov",
"dbUserName": "Uporabniško ime baze podatkov",
"OK": "v redu",
"SetupConfirmation page title": "Sistemske zahteve",
"PHP Configuration": "nastavitve PHP",
"MySQL Configuration": "Nastavitve zbirke podatkov",
"Permission Requirements": "Dovoljenja",
"Success": "Uspeh",
"Fail": "neuspeh",
"is recommended": "je priporočljivo",
"extension is missing": "razširitev manjka",
"headerTitle": "Namestitev EspoCRM",
"Crontab setup instructions": "Brez izvajanja načrtovanih opravil dohodna e-pošta obvestila in opomniki ne bodo delovali. Tukaj lahko preberete {SETUP_INSTRUCTIONS}.",
"Setup instructions": "navodila za namestitev"
},
"fields": {
"Choose your language": "Izberite svoj jezik",
"Database Name": "Ime baze podatkov",
"Host Name": "Ime gostitelja",
"Port": "Pristanišče",
"smtpPort": "Pristanišče",
"Database User Name": "Uporabniško ime baze podatkov",
"Database User Password": "Uporabniško geslo baze podatkov",
"Database driver": "Gonilnik baze podatkov",
"User Name": "Uporabniško ime",
"Password": "Geslo",
"smtpPassword": "Geslo",
"Confirm Password": "Potrdite geslo",
"From Address": "Od naslova",
"From Name": "Od imena",
"Is Shared": "Je v skupni rabi",
"Date Format": "Format datuma",
"Time Format": "Format časa",
"Time Zone": "Časovni pas",
"First Day of Week": "Prvi dan v tednu",
"Thousand Separator": "Ločilo tisoč",
"Decimal Mark": "Decimalna oznaka",
"Default Currency": "Privzeta valuta",
"Currency List": "Seznam valut",
"Language": "Jezik",
"smtpServer": "Strežnik",
"smtpSecurity": "Varnost",
"smtpUsername": "Uporabniško ime",
"emailAddress": "E-naslov"
},
"messages": {
"1045": "Dostop uporabniku zavrnjen",
"1049": "Neznana zbirka podatkov",
"2005": "Neznan gostitelj strežnika MySQL",
"Some errors occurred!": "Prišlo je do nekaj napak!",
"phpVersion": "EspoCRM ne podpira vaše različice PHP, posodobite jo vsaj na PHP {minVersion}",
"requiredMysqlVersion": "EspoCRM ne podpira vaše različice MySQL, posodobite vsaj na MySQL {minVersion}",
"The PHP extension was not found...": "Napaka PHP: Razširitve <b>{extName}</b> ni mogoče najti.",
"All Settings correct": "Vse nastavitve so pravilne",
"Failed to connect to database": "Povezava z zbirko podatkov ni uspela",
"PHP version": "PHP različica",
"You must agree to the license agreement": "Strinjati se morate z licenčno pogodbo",
"Passwords do not match": "geslo se ne ujema",
"Enable mod_rewrite in Apache server": "Omogoči mod_rewrite v strežniku Apache",
"checkWritable error": "napaka checkWritable",
"applySett error": "napaka applySett",
"buildDatabase error": "napaka buildDatabase",
"createUser error": "napaka createUser",
"checkAjaxPermission error": "napaka checkAjaxPermission",
"Cannot create user": "Uporabnika ni mogoče ustvariti",
"Permission denied": "Dovoljenje zavrnjeno",
"Permission denied to": "Dovoljenje zavrnjeno",
"Can not save settings": "Nastavitev ni mogoče shraniti",
"Cannot save preferences": "Nastavitve ni mogoče shraniti",
"Thousand Separator and Decimal Mark equal": "Ločilo za tisoč in decimalni znak ne moreta biti enaka",
"extension": "Manjka razširitev {0}",
"option": "Priporočena vrednost je {0}",
"mysqlSettingError": "EspoCRM zahteva, da je nastavitev MySQL »{NAME}« nastavljena na {VALUE}",
"requiredMariadbVersion": "EspoCRM ne podpira vaše različice MariaDB, posodobite vsaj na MariaDB {minVersion}",
"Ajax failed": "prišlo je do nepredvidene napake",
"Bad init Permission": "Dovoljenje za imenik »{*}« zavrnjeno. Nastavite 775 za \"{*}\" ali preprosto izvedite ta ukaz v terminalu <pre><b>{C}</b></pre> Operacija ni dovoljena? Poskusite tole: {CSU}",
"permissionInstruction": "<br>Zaženite ta ukaz v terminalu:<pre><b>\"{C}\"</b></pre>",
"operationNotPermitted": "Operacija ni dovoljena? Poskusite tole: <br><br>{CSU}"
},
"options": {
"db driver": {
"pdo_mysql": "ZOP MySQL"
},
"modRewriteTitle": {
"apache": "<h3>Napaka API-ja: EspoCRM API ni na voljo.</h3><br>Izvedite samo potrebne korake. Po vsakem koraku preverite, ali je težava odpravljena.",
"nginx": "<h3>Napaka API-ja: EspoCRM API ni na voljo.</h3>",
"microsoft-iis": "<h3>Napaka API-ja: EspoCRM API ni na voljo.</h3><br> Možna težava: onemogočeno »URL Rewrite«. Preverite in omogočite modul »URL Rewrite« v strežniku IIS",
"default": "<h3>Napaka API-ja: EspoCRM API ni na voljo.</h3><br> Možne težave: onemogočen modul za ponovno pisanje. Preverite in omogočite Rewrite Module v vašem strežniku (npr. mod_rewrite v Apache) in podporo za .htaccess."
},
"modRewriteInstruction": {
"apache": {
"linux": "<br><br><h4>1. Omogoči \"mod_rewrite\".</h4>Če želite omogočiti <i>mod_rewrite</i>, zaženite te ukaze v terminalu:<br><br><pre>{APACHE1}</pre><hr><h4>2 . Če prejšnji korak ni pomagal, poskusite omogočiti podporo za .htaccess.</h4> Dodajte/uredite nastavitve konfiguracije strežnika <code>{APACHE2_PATH1}</code> ali <code>{APACHE2_PATH2}</code> (ali < code>{APACHE2_PATH3}</code>):<br><br><pre>{APACHE2}</pre> Nato zaženite ta ukaz v terminalu:<br><br><pre>{APACHE3}</pre ><hr><h4>3. Če prejšnji korak ni pomagal, poskusite dodati pot RewriteBase.</h4>Odprite datoteko <code>{API_PATH}.htaccess</code> in zamenjajte naslednjo vrstico:<br><br><pre>{ APACHE4}</pre>Za<br><br><pre>{APACHE5}</pre><hr>Za več informacij obiščite smernice <a href=\"{APACHE_LINK}\" target=\"_blank\">strežnik Apache konfiguracija za EspoCRM</a>.<br><br>",
"windows": " <br><br> <h4>1. Poiščite datoteko httpd.conf.</h4>Običajno jo najdete v mapi z imenom \"conf\", \"config\" ali kaj podobnega.<br><br><h4>2. Uredite datoteko httpd.conf.</h4> Znotraj datoteke httpd.conf odkomentirajte vrstico <code>{WINDOWS_APACHE1}</code> (odstranite znak '#' pred vrstico).<br>< br><h4>3. Preverite druge parametre.</h4>Preverite tudi, ali je vrstica <code>ClearModuleList</code> odkomentirana in se prepričajte, da vrstica <code>AddModule mod_rewrite.c</code> ni zakomentirana."
},
"nginx": {
"linux": "<br> Dodajte to kodo v konfiguracijsko datoteko strežnika Nginx <code>{NGINX_PATH}</code> znotraj razdelka »strežnik«:<br><br><pre>{NGINX}</pre> <br> Za več informacij obiščite smernice <a href=\"{NGINX_LINK}\" target=\"_blank\">Konfiguracija strežnika Nginx za EspoCRM</a>.<br><br>"
}
}
},
"systemRequirements": {
"requiredPhpVersion": "Različica PHP",
"requiredMysqlVersion": "Različica MySQL",
"host": "Ime gostitelja",
"dbname": "Ime baze podatkov",
"user": "Uporabniško ime",
"writable": "Zapisljiv",
"readable": "Berljivo",
"requiredMariadbVersion": "Različica MariaDB"
}
}

View File

@@ -0,0 +1,101 @@
{
"labels": {
"Main page title": "Dobrodošli u EspoCRM",
"Start page title": "Ugovor o licenci",
"Step1 page title": "Ugovor o licenci",
"License Agreement": "Ugovor o licenci",
"I accept the agreement": "Saglasan sam",
"Step2 page title": "Konfiguracija baze podataka",
"Step3 page title": "Administrator podešavanje",
"Step4 page title": "Podešavanja sistema",
"Step5 page title": "Podešavanja SMTP za odlazeću e-poštu",
"Errors page title": "Greške",
"Finish page title": "Instalacija je završena",
"Congratulation! Welcome to EspoCRM": "Čestitam! EspoCRM je uspešno instaliran.",
"More Information": "Za više informacija, posetite naš {BLOG}, pratite nas na {TWITTER}. <br><br> Ukoliko imate bilo kakve sugestije ili pitanja, obratite se na {FORUM}.",
"share": "Ako vam se dopada EspoCRM, podelite ga sa prijateljima. Neka znaju o ovom proizvodu.",
"Installation Guide": "Uputstvo za instalaciju",
"Locale": "Lokal",
"Outbound Email Configuration": "Odlazna e-pošta konfiguracija",
"Start": "Početak",
"Back": "Nazad",
"Next": "Sledeća",
"Go to EspoCRM": "Idi na EspoCRM",
"Re-check": "Re-provera",
"Version": "Verzija",
"Test settings": "Test veze",
"Database Settings Description": "Unesite svoje podatke za MySQL bazu podataka (hostname, korisničko ime i lozinku). Možete odrediti port servera za hosta kao localhost:3306.",
"Install": "Instaliraj",
"Configuration Instructions": "Instrukcije za podešavanja",
"phpVersion": "PHP verzija",
"requiredMysqlVersion": "MySQL verzija",
"dbHostName": "Ime hosta",
"dbName": "Ime baze",
"dbUserName": "Baza Korisničko ime",
"Permission Requirements": "Dovolenie"
},
"fields": {
"Choose your language": "Izaberite jezik",
"Database Name": "Ime baze",
"Host Name": "Ime hosta",
"Database User Name": "Baza, Korisničko ime",
"Database User Password": "Baza podataka, lozinka korisnika",
"Database driver": "Driver baze podataka",
"User Name": "Korisničko ime",
"Password": "Lozinka",
"smtpPassword": "Lozinka",
"Confirm Password": "Potvrdite lozinku",
"From Address": "Dolazna adresa",
"From Name": "Od osobe",
"Is Shared": "se deli",
"Date Format": "Format datuma",
"Time Format": "Format vremena",
"Time Zone": "Vremenska zona",
"First Day of Week": "Prvi dan sedmice",
"Thousand Separator": "Oznaka za hiljade",
"Decimal Mark": "Decimalna oznaka",
"Default Currency": "Podrazumevana valuta",
"Currency List": "Spisak valuta",
"Language": "Jezik",
"smtpAuth": "Autorizacija",
"smtpSecurity": "Bezbednost",
"smtpUsername": "Korisničko ime",
"emailAddress": "E-pošta"
},
"messages": {
"1045": "Pristup nedozvoljen za korisnika",
"1049": "Nepoznata baza podataka",
"2005": "Nepoznat MySQL host servera",
"Some errors occurred!": "Neke greške su se desile!",
"phpVersion": "Vaša PHP verzija nije podržana od strane EspoCRM, molimo nadogradite PHP na najmanje {minVersion}",
"requiredMysqlVersion": "Vaša MySQL verzija nije podržana od strane EspoCRM, molimo nadogradite na najmanje {minVersion}",
"The PHP extension was not found...": "PHP greška: Ekstenzija <b>{extName}</b> nije pronađena.",
"All Settings correct": "Sva podešavanja su ispravna",
"Failed to connect to database": "Nije uspeo da se poveže sa bazom podataka",
"PHP version": "PHP verzija",
"You must agree to the license agreement": "Morate prihvatiti ugovor o licenciranju",
"Passwords do not match": "Lozinke se ne poklapaju",
"Enable mod_rewrite in Apache server": "Omogućite mod_rewrite na Apache serveru",
"checkWritable error": "checkWritable greška",
"applySett error": "applySett greška",
"buildDatabase error": "buildDatabase greška",
"createUser error": "createUser greška",
"checkAjaxPermission error": "checkAjaxPermission greška",
"Cannot create user": "Ne mogu da kreiram korisnika",
"Permission denied": "Dozvola odbijena",
"Permission denied to": "Dozvola odbijena",
"Can not save settings": "Nemoguće sačuvati podešavanja",
"Cannot save preferences": "Nemoguće sašuvati postavke",
"Thousand Separator and Decimal Mark equal": "Oznaka hiljada i decimalna oznaka ne mogu biti jednake",
"extension": "{0} nedostaje ekstenzija",
"option": "Preporučena vrednost je {0}",
"mysqlSettingError": "EspoCRM zahteva MySQL podešavanje \"{NAME}\" da se podesi na {VALUE}"
},
"systemRequirements": {
"requiredPhpVersion": "PHP verzija",
"requiredMysqlVersion": "MySQL verzija",
"host": "Ime hosta",
"dbname": "Ime baze",
"user": "Korisničko ime"
}
}

View File

@@ -0,0 +1,114 @@
{
"labels": {
"Main page title": "Välkommen till EspoCRM",
"Start page title": "Licensavtal",
"Step1 page title": "Licensavtal",
"License Agreement": "Licensavtal",
"I accept the agreement": "Jag accepterar licensavtalet",
"Step2 page title": "Databaskonfiguration",
"Step3 page title": "Administratörs konfiguration",
"Step4 page title": "Systeminställningar",
"Step5 page title": "SMTP-inställningar för utgående e-post",
"Errors page title": "Fel",
"Finish page title": "Installationen är klar",
"Congratulation! Welcome to EspoCRM": "Gratulerar, EspoCRM har installerats utan problem.",
"More Information": "För mer information, besök vår {BLOG}, följ oss på {TWITTER}.<br><br>Om du har några förslag eller frågor, vänligen fråga på {FORUM}.",
"share": "Om du gillar EspoCRM, dela det med dina vänner. Låt dem veta om den här produkten.",
"blog": "blogg",
"Installation Guide": "Installationsguide",
"Locale": "Plats",
"Outbound Email Configuration": "Utgående e-postkonfiguration",
"Back": "Tillbaka",
"Next": "Nästa",
"Go to EspoCRM": "Kör EspoCRM",
"Re-check": "Kolla igen",
"Test settings": "Testanslutning",
"Database Settings Description": "Ange din MySQL-databasanslutningsinformation (värdnamn, användarnamn och lösenord). Du kan ange serverporten för värdnamn som localhost:3306.",
"Install": "Installera",
"Configuration Instructions": "Konfigureringsinstruktioner",
"dbHostName": "Värdnamn",
"dbName": "Databasnamn",
"dbUserName": "Databas användarnamn",
"SetupConfirmation page title": "Systemkrav",
"PHP Configuration": "PHP-inställningar",
"MySQL Configuration": "Databas-inställningar",
"Permission Requirements": "Behörighet",
"Success": "Framgångsrikt",
"Fail": "Misslyckades",
"is recommended": "är rekommenderat",
"extension is missing": "tillägg saknas",
"Crontab setup instructions": "Utan att köra schemalagda jobb kommer inte inkommande e-postmeddelanden, aviseringar och påminnelser att fungera. Läs mer här {SETUP_INSTRUCTIONS}.",
"Setup instructions": "installationsinstruktioner"
},
"fields": {
"Choose your language": "Välj språk",
"Database Name": "Databasnamn",
"Host Name": "Värdnamn",
"Database User Name": "Databas användarnamn",
"Database User Password": "Databasanvändarens lösenord",
"Database driver": "Databasdrivrutin",
"User Name": "Användarnamn",
"Password": "Lösenord",
"smtpPassword": "Lösenord",
"Confirm Password": "Bekräfta lösenord",
"From Address": "Från adress",
"From Name": "Från namn",
"Is Shared": "Är delad",
"Date Format": "Datumformat",
"Time Format": "Tidsformat",
"Time Zone": "Tidszon",
"First Day of Week": "Första veckodagen",
"Thousand Separator": "Tusen separator",
"Decimal Mark": "Decimaltecken",
"Default Currency": "Standardvaluta",
"Currency List": "Valutalista",
"Language": "Språk",
"smtpSecurity": "Säkerhet",
"smtpUsername": "Användarnamn",
"emailAddress": "E-post"
},
"messages": {
"1045": "Åtkomst nekad för användaren",
"1049": "Okänd databas",
"2005": "Okänd MySql-server värd",
"Some errors occurred!": "Några fel uppstod!",
"phpVersion": "Din PHP-version stöds inte av EspoCRM, vänligen uppdatera till PHP {minVersion} minst",
"requiredMysqlVersion": "Din MySql-version stöds inte av EspoCRM, vänligen uppdatera till MySql {minVersion} minst",
"The PHP extension was not found...": "PHP-fel: Tillägg <b>{extName}</b> kan inte hittas.",
"All Settings correct": "Alla Inställningar är korrekta",
"Failed to connect to database": "Det gick inte att ansluta till databasen",
"PHP version": "PHP-version",
"You must agree to the license agreement": "Du måste godkänna licensavtalet",
"Passwords do not match": "Lösenorden matchar inte",
"Enable mod_rewrite in Apache server": "Aktivera mod_rewrite i Apache-servern",
"checkWritable error": "checkWritable-fel",
"applySett error": "applySett-fel",
"buildDatabase error": "buildDatabase-fel",
"createUser error": "createUser-fel",
"checkAjaxPermission error": "checkAjaxPermission-fel",
"Cannot create user": "Kan inte skapa användare",
"Permission denied": "Åtkomst nekad",
"Permission denied to": "Åtkomst nekad",
"Can not save settings": "Kan inte spara inställningarna",
"Cannot save preferences": "Det går inte att spara inställningarna",
"Thousand Separator and Decimal Mark equal": "Tusen separator och decimaltecken kan inte vara samma",
"extension": "{0} tillägg saknas",
"option": "Rekommenderat värde är {0}",
"mysqlSettingError": "EspoCRM kräver att MySQL konfiguration \"{NAME}\" sätts till {VALUE}",
"requiredMariadbVersion": "Din MariaDB-version stöds inte av EspoCRM, vänligen uppdatera minst till MariaDB {minVersion}",
"Ajax failed": "Ett oväntat fel uppstod",
"Bad init Permission": "Åtkomst nekad för katalogen \"{*}\". Ställ in 775 för \"{*}\" eller kör bara det här kommandot i terminalen <pre><b>{C}</b> </pre> Kommandot är inte tillåtet? Prova detta: {CSU} ",
"permissionInstruction": "<br>Kör detta kommando i terminalen:<pre><b>\"{C}\"</b></pre>",
"operationNotPermitted": "Kommandot är inte tillåtet? Testa detta: <br><br>{CSU}"
},
"systemRequirements": {
"requiredPhpVersion": "PHP-version",
"requiredMysqlVersion": "MySQL-version",
"host": "Värdnamn",
"dbname": "Databasnamn",
"user": "Användarnamn",
"writable": "Skrivbar",
"readable": "Läsbar",
"requiredMariadbVersion": "MariaDB-version"
}
}

View File

@@ -0,0 +1,144 @@
{
"labels": {
"headerTitle": "การติดตั้ง EspoCRM",
"Main page title": "ยินดีต้อนรับสู่ EspoCRM",
"Start page title": "ข้อตกลง",
"Step1 page title": "ข้อตกลง",
"License Agreement": "ข้อตกลง",
"I accept the agreement": "ฉันยอมรับข้อตกลง",
"Step2 page title": "การกำหนดค่าฐานข้อมูล",
"Step3 page title": "การตั้งค่าผู้ดูแลระบบ",
"Step4 page title": "การตั้งค่าระบบ",
"Step5 page title": "การตั้งค่า SMTP สำหรับอีเมลขาออก",
"Errors page title": "ข้อผิดพลาด",
"Finish page title": "การติดตั้งเสร็จสมบูรณ์",
"Congratulation! Welcome to EspoCRM": "ยินดีด้วย! ติดตั้ง EspoCRM สำเร็จแล้ว",
"More Information": "สำหรับข้อมูลเพิ่มเติมโปรดไปที่ {BLOG} ของเราติดตามเราได้ที่ {TWITTER} <br> <br> หากคุณมีข้อเสนอแนะหรือคำถามใด ๆ โปรดถามที่",
"share": "ถ้าคุณชอบ EspoCRM แบ่งปันกับเพื่อนของคุณ แจ้งให้พวกเขาทราบเกี่ยวกับผลิตภัณฑ์นี้",
"blog": "บล็อก",
"twitter": "ทวิตเตอร์",
"forum": "ฟอรัม",
"Installation Guide": "คู่มือการติดตั้ง",
"admin": "แอดมิน",
"Locale": "สถานที่",
"Outbound Email Configuration": "การกำหนดค่าอีเมลขาออก",
"Start": "เริ่ม",
"Back": "กลับ",
"Next": "ต่อไป",
"Go to EspoCRM": "ไปที่ EspoCRM",
"Re-check": "ตรวจสอบอีกครั้ง",
"Version": "เวอร์ชัน",
"Test settings": "ทดสอบการเชื่อมต่อ",
"Database Settings Description": "ป้อนข้อมูลการเชื่อมต่อฐานข้อมูล MySQL ของคุณ (ชื่อโฮสต์ชื่อผู้ใช้และรหัสผ่าน) คุณสามารถระบุพอร์ตเซิร์ฟเวอร์สำหรับชื่อโฮสต์เช่น",
"Install": "ติดตั้ง",
"SetupConfirmation page title": "ความต้องการของระบบ",
"PHP Configuration": "การตั้งค่า PHP",
"MySQL Configuration": "การตั้งค่าฐานข้อมูล",
"Permission Requirements": "สิทธิ์",
"Configuration Instructions": "คำแนะนำในการกำหนดค่า",
"phpVersion": "เวอร์ชัน PHP",
"requiredMysqlVersion": "เวอร์ชัน MySQL",
"dbHostName": "ชื่อโฮสต์",
"dbName": "ชื่อฐานข้อมูล",
"dbUserName": "ชื่อผู้ใช้ฐานข้อมูล",
"OK": "ตกลง",
"Success": "ประสบความสำเร็จ",
"Fail": "ล้มเหลว",
"is recommended": "ขอแนะนำ",
"extension is missing": "ส่วนขยายหายไป",
"Crontab setup instructions": "หากไม่เรียกใช้อีเมลขาเข้าของงานตามกำหนดการการแจ้งเตือนและการแจ้งเตือนจะไม่ทำงาน คุณสามารถอ่านได้ที่นี่",
"Setup instructions": "คำแนะนำในการตั้งค่า"
},
"fields": {
"Choose your language": "เลือกภาษาของคุณ",
"Database Name": "ชื่อฐานข้อมูล",
"Host Name": "ชื่อโฮสต์",
"Port": "ท่าเรือ",
"smtpPort": "ท่าเรือ",
"Database User Name": "ชื่อผู้ใช้ฐานข้อมูล",
"Database User Password": "รหัสผ่านผู้ใช้ฐานข้อมูล",
"Database driver": "ไดรเวอร์ฐานข้อมูล",
"User Name": "ชื่อผู้ใช้",
"Password": "รหัสผ่าน",
"smtpPassword": "รหัสผ่าน",
"Confirm Password": "ยืนยันรหัสผ่านของคุณ",
"From Address": "จากที่อยู่",
"From Name": "จากชื่อ",
"Is Shared": "ถูกแชร์",
"Date Format": "รูปแบบวันที่",
"Time Format": "รูปแบบเวลา",
"Time Zone": "เขตเวลา",
"First Day of Week": "วันแรกของสัปดาห์",
"Thousand Separator": "ตัวคั่นพัน",
"Decimal Mark": "เครื่องหมายทศนิยม",
"Default Currency": "สกุลเงินเริ่มต้น",
"Currency List": "รายการสกุลเงิน",
"Language": "ภาษา",
"smtpServer": "เซิร์ฟเวอร์",
"smtpSecurity": "ความปลอดภัย",
"smtpUsername": "ชื่อผู้ใช้",
"emailAddress": "อีเมล์"
},
"messages": {
"1045": "การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้",
"1049": "ฐานข้อมูลที่ไม่รู้จัก",
"2005": "ไม่รู้จักโฮสต์เซิร์ฟเวอร์ MySQL",
"Bad init Permission": "ปฏิเสธการอนุญาตสำหรับไดเรกทอรี \\ \"{*} \" โปรดตั้งค่า 775 สำหรับ \\ \"{*} \" หรือเพียงเรียกใช้คำสั่งนี้ในเทอร์มินัล",
"Some errors occurred!": "เกิดข้อผิดพลาดบางประการ!",
"phpVersion": "EspoCRM ไม่รองรับเวอร์ชัน PHP ของคุณโปรดอัปเดตเป็น PHP {minVersion} เป็นอย่างน้อย",
"requiredMysqlVersion": "EspoCRM ไม่รองรับเวอร์ชัน MySQL ของคุณโปรดอัปเดตเป็น MySQL {minVersion} เป็นอย่างน้อย",
"requiredMariadbVersion": "EspoCRM ไม่รองรับเวอร์ชัน MariaDB ของคุณโปรดอัปเดตเป็น MariaDB {minVersion} เป็นอย่างน้อย",
"The PHP extension was not found...": "ข้อผิดพลาด PHP: ไม่พบส่วนขยาย <b> {extName} </b>",
"All Settings correct": "การตั้งค่าทั้งหมดถูกต้อง",
"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",
"checkWritable error": "ข้อผิดพลาด checkWritable",
"applySett error": "ข้อผิดพลาด applySett",
"buildDatabase error": "ข้อผิดพลาด buildDatabase",
"createUser error": "ข้อผิดพลาด createUser",
"checkAjaxPermission error": "ข้อผิดพลาด checkAjaxPermission",
"Ajax failed": "เกิดความผิดพลาดอย่างไม่ได้คาดคิด",
"Cannot create user": "ไม่สามารถสร้างผู้ใช้",
"Permission denied": "ปฏิเสธการอนุญาต",
"Permission denied to": "ปฏิเสธการอนุญาต",
"permissionInstruction": "<br> เรียกใช้คำสั่งนี้ใน Terminal: <pre> <b> \\ \"{C} \" </b> </pre>",
"operationNotPermitted": "ไม่อนุญาตให้ดำเนินการ? ลองดู: <br> <br> {CSU}",
"Can not save settings": "ไม่สามารถบันทึกการตั้งค่า",
"Cannot save preferences": "ไม่สามารถบันทึกค่ากำหนด",
"Thousand Separator and Decimal Mark equal": "ตัวคั่นหลักพันและเครื่องหมายทศนิยมไม่สามารถเท่ากันได้",
"extension": "ส่วนขยาย {0} หายไป",
"option": "ค่าที่แนะนำคือ {0}",
"mysqlSettingError": "EspoCRM ต้องการการตั้งค่า MySQL \\ \"{NAME} \" เพื่อตั้งค่าเป็น {VALUE}"
},
"options": {
"modRewriteTitle": {
"apache": "ข้อผิดพลาด API: EspoCRM API ไม่พร้อมใช้งาน <br> ปัญหาที่เป็นไปได้: ปิดใช้งาน \\ \"mod_rewrite \" ในเซิร์ฟเวอร์ Apache ปิดใช้งานการสนับสนุน. htaccess",
"nginx": "ข้อผิดพลาด API: EspoCRM API ไม่พร้อมใช้งาน <br> เพิ่มรหัสนี้ในไฟล์กำหนดค่าบล็อกเซิร์ฟเวอร์ Nginx ของคุณ (/ etc / nginx / sites-available",
"microsoft-iis": "ข้อผิดพลาด API: EspoCRM API ไม่พร้อมใช้งาน <br> ปัญหาที่เป็นไปได้: ปิดใช้งาน \\ \"URL Rewrite \" โปรดตรวจสอบและเปิดใช้งานโมดูล \\ \"URL Rewrite \"",
"default": "ข้อผิดพลาดของ API: EspoCRM API ไม่พร้อมใช้งาน <br> ปัญหาที่เป็นไปได้: ปิดใช้งานโมดูลการเขียนซ้ำ โปรดตรวจสอบและเปิดใช้งาน Rewrite Module ในไฟล์"
},
"modRewriteInstruction": {
"apache": {
"linux": "<br> <br> 1. เปิดใช้งาน \\ \"mod_rewrite \" ในการรันคำสั่งเหล่านั้นใน Terminal: <pre> {APACHE1} </pre> <br> 2. หากขั้นตอนก่อนหน้านี้ไม่ได้",
"windows": "<br> <pre> 1. ค้นหาไฟล์ httpd.conf (โดยปกติคุณจะพบในโฟลเดอร์ที่เรียกว่า conf, config หรืออะไรก็ตาม"
},
"nginx": {
"linux": "<br> \\ n <pre> \\ n {NGINX} \\ n </pre> <br> สำหรับข้อมูลเพิ่มเติมโปรดไปที่คำแนะนำ <a href = \\ \"https://www.espocrm.com/documentation",
"windows": "<br> \\ n <pre> \\ n {NGINX} \\ n </pre> <br> สำหรับข้อมูลเพิ่มเติมโปรดไปที่คำแนะนำ <a href = \\ \"https://www.espocrm.com/documentation"
}
}
},
"systemRequirements": {
"requiredPhpVersion": "เวอร์ชัน PHP",
"requiredMysqlVersion": "เวอร์ชัน MySQL",
"requiredMariadbVersion": "รุ่น MariaDB",
"host": "ชื่อโฮสต์",
"dbname": "ชื่อฐานข้อมูล",
"user": "ชื่อผู้ใช้",
"writable": "เขียนได้",
"readable": "อ่านได้"
}
}

View File

@@ -0,0 +1,119 @@
{
"labels": {
"Main page title": "EspoCRM e Hoşgeldiniz",
"Start page title": "Lisans Sözleşmesi",
"Step1 page title": "Lisans Sözleşmesi",
"License Agreement": "Lisans Sözleşmesi",
"I accept the agreement": "Sözleşmeyi kabul ediyorum",
"Step2 page title": "Veritabanı Yapılandırması",
"Step3 page title": "Yönetici kurulumu",
"Step4 page title": "Sistem Ayarları",
"Step5 page title": "Giden epostalar için SMTP ayarları",
"Errors page title": "Hatalar",
"Finish page title": "Yükleme tamamlandı",
"Congratulation! Welcome to EspoCRM": "Tebrikler! EspoCRM'i başarıyla yüklediniz.",
"More Information": "Daha fazla bilgi için {BLOG} sayfamızı ziyaret edin, bizi {TWITTER} sayfasından takip edin. <br> <br> Herhangi bir öneri veya sorunuz varsa lütfen {FORUM} adresinden sorun.",
"share": "EspoCRM'i beğendiyseniz, arkadaşlarınıza önerin. Onlarında bu ürünü öğrenmelerini ve kullanmalarını sağlayın.",
"blog": "Blog",
"Installation Guide": "Kurulum Talimatları",
"admin": "Yönetici",
"Locale": "Yerel Ayar",
"Outbound Email Configuration": "Giden Eposta Yapılandırması",
"Start": "Başla",
"Back": "Geri",
"Next": "Sonraki",
"Go to EspoCRM": "EspoCRM sayfama git",
"Re-check": "Tekrar Kontrol Et",
"Version": "Sürüm",
"Test settings": "Bağlantıyı Kontrol Et",
"Database Settings Description": "MySQL veritabanı bağlantı bilgilerinizi (hostname, kullanıcı adı ve şifre) girin. Localhost: 3306 gibi hostname için sunucu portunu belirtebilirsiniz.",
"Install": "Yükle",
"Configuration Instructions": "Yapılandırma Talimatları",
"phpVersion": "PHP sürümü",
"dbHostName": "Sunucu Adı",
"dbName": "Veritabanı adı",
"dbUserName": "Veritabanı Kullanıcı Adı",
"OK": "Tamam",
"SetupConfirmation page title": "Sistem gereksinimleri",
"PHP Configuration": "PHP ayarları",
"MySQL Configuration": "Veri tabanı ayarları",
"Permission Requirements": "Izin",
"Success": "Başarılı",
"Fail": "Başarısız",
"is recommended": "taviye edilirmi",
"extension is missing": "eksik Eklenti",
"headerTitle": "EspoCRM Kurulumu"
},
"fields": {
"Choose your language": "Dil seçin",
"Database Name": "Veritabanı adı",
"Host Name": "Sunucu Adı",
"Port": "Bağlantı Noktası",
"smtpPort": "Bağlantı Noktası",
"Database User Name": "Veritabanı Kullanıcı Adı",
"Database User Password": "Veritabanı Şifresi",
"Database driver": "Veritabanı sürücüsü",
"User Name": "Kullanıcı Adı",
"Password": "Şifre",
"smtpPassword": "Şifre",
"Confirm Password": "Şifrenizi Doğrulayın",
"From Address": "Gönderen Adresi",
"From Name": "Kimden",
"Is Shared": "Paylaşıldı",
"Date Format": "Tarih Biçimi",
"Time Format": "Saat Biçimi",
"Time Zone": "Zaman Dilimi",
"First Day of Week": "Hafta Başlangıç Günü",
"Thousand Separator": "Bindelik Ayraç",
"Decimal Mark": "Ondalık Ayraç",
"Default Currency": "Varsayılan Para Birimi",
"Currency List": "Para Birimi Listesi",
"Language": "Dil",
"smtpServer": "Sunucu",
"smtpAuth": "Kimlik",
"smtpSecurity": "Güvenlik",
"smtpUsername": "Kullanıcı Adı",
"emailAddress": "Eposta"
},
"messages": {
"1045": "Erişim kullanıcı tarafından reddedildi",
"1049": "Bilinmeyen veritabanı",
"2005": "Bilinmeyen MySQL sunucusu",
"Some errors occurred!": "Bazı hatalar oluştu!",
"phpVersion": "PHP sürümünüz EspoCRM tarafından desteklenmiyor, en az PHP {minVersion} sürümü olmalı",
"requiredMysqlVersion": "MySQL sürümünüz EspoCRM tarafından desteklenmiyor, en az MySQL {minVersion} sürümü olmalı",
"The PHP extension was not found...": "<b>{extName}</b> PHP eklentisi bulunamadı...",
"All Settings correct": "Tüm ayarlar doğru",
"Failed to connect to database": "Veritabanına bağlanma başarısız oldu",
"PHP version": "PHP sürümü",
"You must agree to the license agreement": "Lisans sözleşmesini kabul etmelisiniz",
"Passwords do not match": "Şifreler eşleşmiyor",
"Enable mod_rewrite in Apache server": "Apache sunucusunda Mod_rewrite'ı etkinleştirin",
"checkWritable error": "checkWritable hatası",
"applySett error": "applySett hatası",
"buildDatabase error": "buildDatabase hatası",
"createUser error": "createUser hatası",
"checkAjaxPermission error": "checkAjaxPermission hatası",
"Cannot create user": "Kullanıcı oluşturulamıyor",
"Permission denied": "Erişim izni reddedildi",
"Permission denied to": "Erişim izni reddedildi",
"Can not save settings": "Ayarlar kayıt edilemiyor",
"Cannot save preferences": "Özellikler kayıt edilemiyor",
"Thousand Separator and Decimal Mark equal": "Bindelik ayraç ve ondalık ayraç aynı olamaz",
"extension": "{0} uzantı eksik",
"option": "Önerilen değer {0}",
"mysqlSettingError": "EspoCRM, \"{NAME} \" ayarının {VALUE} olarak ayarlanmasını gerektiriyor",
"requiredMariadbVersion": "MariaDB sürümünüz EspoCRM tarafından desteklenmiyor, lütfen en az MariaDB {minVersion} sürümüne güncelleyin",
"Ajax failed": "Beklenmeyen bir hata oluştu"
},
"systemRequirements": {
"requiredPhpVersion": "PHP sürümü",
"requiredMysqlVersion": "MySQL sürümü",
"host": "Sunucu Adı",
"dbname": "Veritabanı adı",
"user": "Kullanıcı Adı",
"writable": "Yazılabilir",
"readable": "Okunabilir",
"requiredMariadbVersion": "MariaDB sürümü"
}
}

View File

@@ -0,0 +1,144 @@
{
"labels": {
"Main page title": "Ласкаво просимо до EspoCRM",
"Start page title": "Ліцензійна угода",
"Step1 page title": "Ліцензійна угода",
"License Agreement": "Ліцензійна угода",
"I accept the agreement": "Я приймаю угоду",
"Step2 page title": "Конфіґурація бази даних",
"Step3 page title": "Установки адміністратора",
"Step4 page title": "Системні налаштування",
"Step5 page title": "Налаштування SMTP для вихідних листів",
"Errors page title": "Помилки",
"Finish page title": "Установку завершено",
"Congratulation! Welcome to EspoCRM": "Вітання! EspoCRM було успішно встановлено.",
"More Information": "Щоб дізнатися більше, будь ласка, відвідайте наш {BLOG}, слідкуйте за нами в {TWITTER}.<br><br>Якщо у Вас є будь-які думки або питання, будь ласка, викладайте на {FORUM}.",
"share": "Якщо вам подобається EspoCRM, поділіться нею зі своїми друзями. Нехай вони знають про цей прекрасний продукт.",
"blog": "блог",
"twitter": "Твіттер",
"forum": "форум",
"Installation Guide": "Керівництво з установки",
"Locale": "Локаль",
"Outbound Email Configuration": "Налаштування вихідної пошти",
"SMTP": "Протокол SMTP",
"Start": "Старт",
"Back": "Назад",
"Next": "Далі",
"Go to EspoCRM": "Перейти до EspoCRM",
"Re-check": "Перевірити повторно",
"Version": "Версія",
"Test settings": "Перевірка з'єднання",
"Database Settings Description": "Введіть інформацію для з'єднання із вашою базою даних MySQL (ім'я хоста, ім'я користувача та пароль). Ви можете вказати порт сервера для імені хоста, н-д: localhost:3306.",
"Install": "Установити",
"Configuration Instructions": "Інструкції конфіґурування",
"phpVersion": "Версія PHP",
"requiredMysqlVersion": "Версія MySQL",
"dbHostName": "Ім'я хоста",
"dbName": "Ім'я бази даних",
"dbUserName": "Ім'я користувача бази даних",
"OK": "ОК",
"SetupConfirmation page title": "Системні вимоги",
"PHP Configuration": "Конфігурація PHP",
"MySQL Configuration": "Конфігурація бази даних",
"Permission Requirements": "Дозволи",
"Success": "Успішно",
"Fail": "Невдача",
"is recommended": "рекомендується",
"extension is missing": "розширення відсутнє",
"headerTitle": "Установка EspoCRM",
"Crontab setup instructions": "Без запуску запланованих завдань вхідні електронні листи, сповіщення та нагадування не працюватимуть. Тут ви можете прочитати {SETUP_INSTRUCTIONS}.",
"Setup instructions": "інструкції з налаштування"
},
"fields": {
"Choose your language": "Оберіть Вашу мову",
"Database Name": "Ім'я бази даних",
"Host Name": "Ім'я хоста",
"Port": "Порт",
"smtpPort": "Порт",
"Database User Name": "Ім'я користувача бази даних",
"Database User Password": "Пароль користувача бази даних",
"Database driver": "Драйвер бази даних",
"User Name": "Ім'я користувача",
"Password": "Пароль",
"smtpPassword": "Пароль",
"Confirm Password": "Підтвердіть Ваш пароль",
"From Address": "З адреси",
"From Name": "Від імені",
"Is Shared": "Спільний доступ",
"Date Format": "Формат дати",
"Time Format": "Формат часу",
"Time Zone": "Часовий пояс",
"First Day of Week": "Перший день тижня",
"Thousand Separator": "Роздільник тисяч",
"Decimal Mark": "Розділювач десяткових",
"Default Currency": "Валюта за замовчуванням",
"Currency List": "Список валют",
"Language": "Мова",
"smtpServer": "Сервер",
"smtpAuth": "Авторизація",
"smtpSecurity": "Безпека",
"smtpUsername": "Ім'я користувача",
"emailAddress": "Електронна пошта"
},
"messages": {
"1045": "Доступ заборонений для користувача",
"1049": "Невідома база даних",
"2005": "Невідомий хост сервера MySQL",
"Some errors occurred!": "Виникли деякі помилки!",
"phpVersion": "Ваша версія PHP не підтримується EspoCRM, будь ласка, оновіть принаймні до PHP {minVersion}",
"requiredMysqlVersion": "Ваша версія MySQL не підтримує EspoCRM, будь ласка, оновіть принаймні до MySQL {minVersion}",
"The PHP extension was not found...": "Помилка PHP: розширення <b>{extName}</b> не знайдено.",
"All Settings correct": "Всі налаштування правильні.",
"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 сервер",
"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": "Роздільник тисяч і розділювач десяткових не можуть бути однаковими",
"extension": "{0} розширення відсутнє",
"option": "Рекомендоване значення {0}",
"mysqlSettingError": "EspoCRM потребує, щоб параметр MySQL \"{NAME}\" мав значення {VALUE}",
"requiredMariadbVersion": "Ваша версія MariaDB не підтримується EspoCRM, оновіть принаймні до MariaDB {minVersion}",
"Ajax failed": "Неочікувана помилка",
"Bad init Permission": "Дозвіл відхилено для каталогу \"{*}\". Будь ласка, встановіть значення 775 для \"{*}\" або просто виконайте цю команду в терміналі <pre><b>{C}</b></pre> Операція заборонена? Спробуйте це: {CSU}",
"permissionInstruction": "<br>Запустіть цю команду в терміналі:<pre><b>\"{C}\"</b></pre>",
"operationNotPermitted": "Операція заборонена? Спробуйте це: <br><br>{CSU}"
},
"systemRequirements": {
"requiredPhpVersion": "Версія PHP",
"requiredMysqlVersion": "Версія MySQL",
"host": "Ім'я хоста",
"dbname": "Ім'я БД",
"user": "Ім'я користувача",
"writable": "Запис",
"readable": "Читання",
"requiredMariadbVersion": "Версія MariaDB"
},
"options": {
"modRewriteTitle": {
"apache": "<h3>Помилка API: API EspoCRM недоступний.</h3><br>Виконуйте лише необхідні дії. Після кожного кроку перевіряйте, чи проблему вирішено.",
"nginx": "<h3>Помилка API: API EspoCRM недоступний.</h3>",
"microsoft-iis": "<h3>Помилка API: API EspoCRM недоступний.</h3><br> Можлива проблема: вимкнено \"URL Rewrite\". Перевірте та ввімкніть модуль \"URL Rewrite\" на сервері IIS",
"default": "<h3>Помилка API: API EspoCRM недоступний.</h3><br> Можливі проблеми: вимкнено модуль Rewrite. Перевірте та ввімкніть модуль Rewrite на вашому сервері (наприклад, mod_rewrite в Apache) і підтримку .htaccess."
},
"modRewriteInstruction": {
"apache": {
"linux": "<br><br><h4>1. Увімкнути \"mod_rewrite\".</h4>Щоб увімкнути <i>mod_rewrite</i>, виконайте ці команди в терміналі:<br><br><pre>{APACHE1}</pre><hr><h4>2 . Якщо попередній крок не допоміг, спробуйте ввімкнути підтримку .htaccess.</h4> Додайте/відредагуйте налаштування конфігурації сервера <code>{APACHE2_PATH1}</code> або <code>{APACHE2_PATH2}</code> (або < код>{APACHE2_PATH3}</code>):<br><br><pre>{APACHE2}</pre>\n Після цього запустіть цю команду в терміналі:<br><br><pre>{APACHE3}</pre><hr><h4>3. Якщо попередній крок не допоміг, спробуйте додати шлях RewriteBase.</h4>Відкрийте файл <code>{API_PATH}.htaccess</code> і замініть такий рядок:<br><br><pre>{ APACHE4}</pre>До<br><br><pre>{APACHE5}</pre><hr>Щоб дізнатися більше, відвідайте інструкцію <a href=\"{APACHE_LINK}\" target=\"_blank\">сервер Apache конфігурація для EspoCRM</a>.<br><br>",
"windows": "<br><br> <h4>1. Знайдіть файл httpd.conf.</h4>Зазвичай його можна знайти в папці під назвою \"conf\", \"config\" або щось подібне.<br><br><h4>2. Відредагуйте файл httpd.conf.</h4> У файлі httpd.conf розкоментуйте рядок <code>{WINDOWS_APACHE1}</code> (видаліть знак «#» перед рядком).<br>< br><h4>3. Перевірте інші параметри.</h4>Також перевірте, чи не закоментовано рядок <code>ClearModuleList</code> і переконайтеся, що рядок <code>AddModule mod_rewrite.c</code> не закоментовано."
},
"nginx": {
"linux": "<br> Додайте цей код до файлу конфігурації вашого сервера Nginx <code>{NGINX_PATH}</code> у розділі \"сервер\":<br><br><pre>{NGINX}</pre> <br> Для отримання додаткової інформації перегляньте інструкцію <a href=\"{NGINX_LINK}\" target=\"_blank\">Налаштування сервера Nginx для EspoCRM</a>.<br><br>"
}
}
}
}

View File

@@ -0,0 +1,107 @@
{
"labels": {
"Main page title": "Chào mừng đến với EspoCRM",
"Start page title": "Điều khoản và bản quyền",
"Step1 page title": "Điều khoản và bản quyền",
"License Agreement": "Điều khoản và bản quyền",
"I accept the agreement": "Tồi đồng ý với các điều khoản kể trên",
"Step2 page title": "Cài đặt cơ sở dữ liệu",
"Step3 page title": "Thiết lập quản trị",
"Step4 page title": "Thiết lập hệ thống",
"Step5 page title": "Cài đặt SMTP cho email đi",
"Errors page title": "Lỗi",
"Finish page title": "Hoàn thành cài đặt",
"Congratulation! Welcome to EspoCRM": "Xin chúc mừng bạn! EspoCRM đã được cài đặt thành công.",
"Installation Guide": "Hướng dẫn cài đặt",
"Locale": "Bản địa hóa",
"Outbound Email Configuration": "Thiết lập email đi",
"Start": "Bắt đầu",
"Back": "Lùi",
"Next": "Tiến",
"Go to EspoCRM": "Đi đến EspoCRM",
"Re-check": "Kiểm tra lại",
"Version": "Phiên bản",
"Test settings": "Kiểm tra kết nối",
"Install": "Cài đặt",
"Configuration Instructions": "Hướng dẫn cấu hình",
"phpVersion": "Phiên bản PHP",
"requiredMysqlVersion": "Phiên bản MySQL",
"dbHostName": "Tên máy chủ",
"dbName": "Tên cơ sở dữ liệu",
"dbUserName": "Tên truy cập csdl",
"OK": "Đồng ý",
"SetupConfirmation page title": "Yêu cầu hệ thống",
"PHP Configuration": "Cài đặt PHP",
"MySQL Configuration": "Cài đặt cơ sở dữ liệu",
"Permission Requirements": "Quyền hạng",
"Success": "Thành công",
"Fail": "Lỗi",
"is recommended": "được khuyên dùng",
"extension is missing": "Tiện ích mở rộng bị thiếu",
"headerTitle": "Cài đặt Espocrm"
},
"fields": {
"Choose your language": "Chọn ngôn ngữ",
"Database Name": "Tên cơ sở dữ liệu",
"Host Name": "Tên máy chủ",
"Port": "Cổng",
"smtpPort": "Cổng",
"Database User Name": "Tên truy cập csdl",
"Database User Password": "Mật khẩu truy cập csdl",
"Database driver": "Loại csdl",
"User Name": "Tên người dùng",
"Password": "Mật khẩu",
"smtpPassword": "Mật khẩu",
"Confirm Password": "Nhập lại mật khẩu",
"From Address": "Địa chỉ gửi",
"From Name": "tên người gửi",
"Is Shared": "Được chia sẻ",
"Date Format": "Định dạng ngày",
"Time Format": "Định dạng thời gian",
"Time Zone": "Múi giờ",
"First Day of Week": "Ngày đầu tiên của tuần",
"Thousand Separator": "Dấu phân cách hàng nghìn",
"Decimal Mark": "Dấu phân cách thập phân",
"Default Currency": "Tiền tệ mặc định",
"Currency List": "Danh sách tiền tệ",
"Language": "Ngôn ngữ",
"smtpServer": "Máy chủ",
"smtpAuth": "Truy cập",
"smtpSecurity": "Bảo mật",
"smtpUsername": "Tên đăng nhập"
},
"messages": {
"1045": "Truy cập bị từ chối",
"1049": "Không thấy csdl",
"2005": "Không thấy máy chủ MySQL",
"Some errors occurred!": "Đã có lỗi xảy ra!",
"The PHP extension was not found...": "Không tìm thấy phần mở rộng <b>{extName}</b> của PHP",
"All Settings correct": "cài đặt thành công",
"Failed to connect to database": "Không thể kết nối tới csdl",
"PHP version": "Phiên bản PHP",
"You must agree to the license agreement": "Bạn bắt buộc phải đồng ý với các điều khoản",
"Passwords do not match": "Mật khẩu không giống nhau",
"Enable mod_rewrite in Apache server": "Bật mod_rewrite trong Apache",
"checkWritable error": "Lỗi checkWritable",
"applySett error": "Lỗi applySett",
"buildDatabase error": "Lỗi buildDatabase",
"createUser error": "Lỗi createUser",
"checkAjaxPermission error": "Lỗi checkAjaxPermission",
"Cannot create user": "Không thể tạo người dùng",
"Permission denied": "Từ chối truy cập",
"Permission denied to": "Từ chối truy cập",
"Can not save settings": "Không thể lưu thay đổi",
"Cannot save preferences": "Không thể lưu thay đổi",
"Thousand Separator and Decimal Mark equal": "Dấu phân cách thập phân và phần nghìn không thể giống nhau",
"extension": "{0} tiện ích bị thiếu",
"option": "Giá trị khuyến nghị là {0}"
},
"systemRequirements": {
"requiredPhpVersion": "Phiên bản PHP",
"requiredMysqlVersion": "Phiên bản MySQL",
"host": "Tên máy chủ",
"dbname": "Tên cơ sở dữ liệu",
"user": "Tên đăng nhập",
"requiredMariadbVersion": "Phiên bản MariaDB"
}
}

View File

@@ -0,0 +1,100 @@
{
"labels": {
"Main page title": "欢迎来到EspoCRM",
"Start page title": "许可协议",
"Step1 page title": "许可协议",
"License Agreement": "许可协议",
"I accept the agreement": "我接受此协议",
"Step2 page title": "数据库配置",
"Step3 page title": "管理员设置",
"Step4 page title": "系统设置",
"Step5 page title": "外发电子邮件的SMTP设置",
"Errors page title": "错误",
"Finish page title": "安装完成",
"Congratulation! Welcome to EspoCRM": "恭喜EspoCRM已成功安装。",
"More Information": "获取更多信息,请访问我们的 {BLOG},关注我们的{TWITTER}。<br> <br>如果您有任何建议或问题,请在{FORUM}上询问。",
"share": "如果你喜欢EspoCRM与朋友分享让他们知道这个产品。",
"blog": "博客",
"twitter": "推特",
"forum": "论坛",
"Installation Guide": "安装指南",
"Locale": "语言环境",
"Outbound Email Configuration": "出站电子邮件配置",
"Start": "开始",
"Back": "上一步",
"Next": "下一步",
"Go to EspoCRM": "转到EspoCRM",
"Re-check": "重新检查",
"Version": "版本",
"Test settings": "测试连接",
"Database Settings Description": "输入您的MySQL数据库连接信息主机名用户名和密码。您可以像localhost:3306这样指定服务器地址和端口。",
"Install": "安装",
"Configuration Instructions": "配置说明",
"phpVersion": "PHP版本",
"requiredMysqlVersion": "MySQL版本",
"dbHostName": "主机名",
"dbName": "数据库名称",
"dbUserName": "数据库用户名",
"OK": "好"
},
"fields": {
"Choose your language": "选择你的语言",
"Database Name": "数据库名称",
"Host Name": "主机名",
"Port": "端口",
"smtpPort": "端口",
"Database User Name": "数据库用户名",
"Database User Password": "数据库用户密码",
"Database driver": "数据库驱动程序",
"User Name": "用户名",
"Password": "密码",
"smtpPassword": "密码",
"Confirm Password": "确认你的密码",
"From Address": "发件人地址",
"From Name": "发件人",
"Is Shared": "共享",
"Date Format": "日期格式",
"Time Format": "时间格式",
"Time Zone": "时区",
"First Day of Week": "每周始于",
"Thousand Separator": "千位分隔符",
"Decimal Mark": "小数标记",
"Default Currency": "默认货币",
"Currency List": "货币列表",
"Language": "语言",
"smtpServer": "SMTP服务器",
"smtpAuth": "验证",
"smtpSecurity": "安全协议",
"smtpUsername": "用户名",
"emailAddress": "电子邮件"
},
"messages": {
"1045": "被拒绝访问的用户",
"1049": "未知数据库",
"2005": "未知的MySQL服务器主机",
"Some errors occurred!": "发生了一些错误!",
"phpVersion": "你的PHP版本不支持EspoCRM请升级到 {minVersion} 或更高版本",
"requiredMysqlVersion": "你的PHP版本不支持EspoCRM请升级到 {minVersion} 或更高版本",
"The PHP extension was not found...": "未找到PHP错误未找到扩展名<b> {extName} </ b>。",
"All Settings correct": "所有设置正确",
"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": "在Apache服务器中启用mod_rewrite",
"checkWritable error": "checkWritable错误",
"applySett error": "应用设置错误",
"buildDatabase error": "构建数据错误",
"createUser error": "创建用户错误",
"checkAjaxPermission error": "检查Ajax权限错误",
"Cannot create user": "无法创建用户",
"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}"
}
}

View File

@@ -0,0 +1,126 @@
{
"labels": {
"Main page title": "歡迎來到 EspoCRM",
"Start page title": "許可協議",
"Step1 page title": "許可協議",
"License Agreement": "許可協議",
"I accept the agreement": "我接受此協議",
"Step2 page title": "資料庫設定",
"Step3 page title": "管理設定",
"Step4 page title": "系統設置",
"Step5 page title": "外寄信箱 SMTP 設定",
"Errors page title": "錯誤",
"Finish page title": "安裝完成",
"Congratulation! Welcome to EspoCRM": "恭喜EspoCRM 安裝成功。",
"More Information": "如需更多資訊,請參訪我們的部落格 {BLOG},在 {TWITTER} 上跟隨我們。<br><br>如果有任何建議和疑問,請在論壇 {FORUM} 上發問。",
"share": "如果你喜歡 EspoCRM請和朋友分享。讓他們也知道這個產品。",
"blog": "部落格",
"twitter": "推特",
"forum": "論壇",
"Installation Guide": "安裝指南",
"admin": "管理員",
"Locale": "地域",
"Outbound Email Configuration": "外寄電子郵件配置",
"Start": "開始",
"Back": "上一步",
"Next": "下一步",
"Go to EspoCRM": "到 EspoCRM",
"Re-check": "再檢查一次",
"Version": "版本",
"Test settings": "測試連接",
"Database Settings Description": "請輸入 MySQL 資料庫連線資訊 (主機、登入和密碼)。你可以指定埠號如 localhost:3306。",
"Install": "安裝",
"Configuration Instructions": "設定指引",
"phpVersion": "PHP 版本",
"requiredMysqlVersion": "MySQL 版本",
"dbHostName": "主機名",
"dbName": "數據庫名稱",
"dbUserName": "資料庫登入帳號",
"SetupConfirmation page title": "PHP設置",
"PHP Configuration": "資料庫設置",
"MySQL Configuration": "權限",
"Permission Requirements": "成功",
"Success": "失敗",
"Fail": "推薦",
"is recommended": "附加元件不存在",
"extension is missing": "PHP版本",
"headerTitle": "如果不做排程內送電子郵件,則通知和提醒將無法運作。在這裡有說明{SETUP_INSTRUCTIONS}。",
"Crontab setup instructions": "設置說明",
"Setup instructions": "“{*}”目錄的權限被拒絕。請為“{*}”設置775或只在終端機中執行此命令<pre> <b> {C} </ b> </pre>。 試試這個:{CSU}"
},
"fields": {
"Choose your language": "選擇你的語言",
"Database Name": "資料庫名",
"Host Name": "主機名",
"Port": "埠號",
"smtpPort": "埠號",
"Database User Name": "資料庫登入名稱",
"Database User Password": "資料庫登入密碼",
"Database driver": "數據庫驅動",
"User Name": "使用者名",
"Password": "密碼",
"smtpPassword": "密碼",
"Confirm Password": "確認你的密碼",
"From Address": "從位址",
"From Name": "從名稱",
"Is Shared": "是否共享",
"Date Format": "日期格式",
"Time Format": "時間格式",
"Time Zone": "時區",
"First Day of Week": "一周第一天",
"Thousand Separator": "千分位",
"Decimal Mark": "小數點",
"Default Currency": "預設貨幣",
"Currency List": "貨幣清單",
"Language": "語言",
"smtpServer": "服務器",
"smtpAuth": "授權",
"smtpSecurity": "安全性",
"smtpUsername": "使用者名稱",
"emailAddress": "電子郵件"
},
"messages": {
"1045": "使用者被拒絕存取",
"1049": "未知資料庫",
"2005": "未知 MySQL 伺服器",
"Some errors occurred!": "發生一些錯誤!",
"phpVersion": "目前的 PHP 不被 EspoCRM 支援,請更新到 PHP {minVersion} 以上",
"requiredMysqlVersion": "目前的 MySQL 不被 EspoCRM 支援,請更新到 MySQL {minVersion} 以上",
"The PHP extension was not found...": "PHP 錯誤:附加元件 <b>{extName}</b> 找不到。",
"All Settings correct": "所有設置正確",
"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": "在 Apache 伺服器中啟用 mod_rewrite",
"checkWritable error": "checkWritable 錯誤",
"applySett error": "aplySett 錯誤",
"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": "千分位和小數點不可相同",
"extension": "附加元件 {0} 找不到",
"option": "建議值是 {0}",
"mysqlSettingError": "EspoCRM 要求 MySQL 設定中「{NAME}」要設定成 {VALUE}",
"requiredMariadbVersion": "一個未預期的問題發生了",
"Ajax failed": "MariaDB版本",
"Bad init Permission": "<br>在終端機中執行以下命令:<pre> <b>“{C}” </b> </pre>",
"permissionInstruction": "不允許操作嗎?試試這個:<br> <br> {CSU}",
"operationNotPermitted": "轉換為"
},
"systemRequirements": {
"requiredPhpVersion": "MySQL版本",
"requiredMysqlVersion": "主機名",
"host": "資料庫設置",
"dbname": "使用者",
"user": "可寫",
"writable": "可讀",
"readable": "邀請",
"requiredMariadbVersion": "允許自定義選項"
}
}

View File

@@ -0,0 +1,33 @@
<div class="panel-body body">
<div id="msg-box" class="alert alert-danger">{$errors}</div>
<form id="nav">
<div class="row">
<div class=" col-md-13">
<div class="panel-body" style="text-align: center">
</div>
</div>
</div>
</form>
</div>
<footer class="modal-footer">
<button class="btn btn-warning btn-s-wide" type="button" id="re-check">{$langs['labels']['Re-check']}</button>
</footer>
<script>
{literal}
$(function(){
{/literal}
var opt = {
action: 'errors',
langs: {$langsJs},
modRewriteUrl: '{$modRewriteUrl}',
apiPath: '{$apiPath}',
serverType: '{$serverType}',
OS: '{$OS}'
}
{literal}
var installScript = new InstallScript(opt);
installScript.showLoading();
installScript.actionsChecking();
})
{/literal}
</script>

View File

@@ -0,0 +1,47 @@
<div class="panel-body body">
<form id="nav">
<div class="row">
<div class=" col-md-13">
<div class="panel-body">
<div class="likes">
<p>
{$langs['labels']['Congratulation! Welcome to EspoCRM']}
</p>
</div>
{if $cronHelp}
<div class="cron-help">
{$cronTitle}
<pre>
{$cronHelp}
</pre>
<p>
{assign var="link" value="<a target=\"_blank\" href=\"https://www.espocrm.com/documentation/administration/server-configuration/#user-content-setup-a-crontab\">{$langs['labels']['Setup instructions']}</a>"}
{assign var="message" value="{$langs['labels']['Crontab setup instructions']|replace:'{SETUP_INSTRUCTIONS}':$link}"}
{$message}
</p>
</div>
{/if}
</div>
</div>
</div>
</form>
</div>
<footer class="modal-footer">
<button class="btn btn-primary" type="button" id="start">{$langs['labels']['Go to EspoCRM']}</button>
</footer>
<script>
{literal}
$(function(){
{/literal}
var langs = {$langsJs};
{literal}
var installScript = new InstallScript({action: 'finish', langs: langs});
})
{/literal}
</script>

View File

@@ -0,0 +1 @@
<p class="credit small">&copy; 2025 <a href="https://www.espocrm.com">EspoCRM, Inc.</a></p>

View File

@@ -0,0 +1,15 @@
<div class="panel-heading main-header">
<img src="../{$logoSrc}" style="height: 43px;">
</div>
<header class="step-header">
<div class="row">
<div class="col-md-10">
<h4>
{$langs['labels']["{$action} page title"]}
</h4>
</div>
<div class="col-md-2 version" style="text-align: right">
{$langs['labels']['Version']} {$version}
</div>
</div>
</header>

View File

@@ -0,0 +1,37 @@
<!doctype html>
<html>
<head>
<title>{$langs['labels']['headerTitle']}</title>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<script type="application/json" data-name="loader-params">{$loaderParams}</script>
{if $isBuilt}
{foreach from=$libFileList item=file}
<script type="text/javascript" src="../{$file}"></script>
{/foreach}
{/if}
<script type="text/javascript" src="js/install.js"></script>
<link href="../{$stylesheet}" rel="stylesheet">
<link href="css/install.css" rel="stylesheet">
<link rel="shortcut icon" href="../client/img/favicon.ico" type="image/x-icon">
</head>
<body class='install-body'>
<a href="index.tpl"></a>
<header id="header"></header>
<div class="container content">
<div class="col-md-offset-1 col-md-10">
<div class="panel panel-default">
{include file="header.tpl"}
{include file="$tplName"}
</div>
</div>
</div>
<footer class="container">{include file="footer.tpl"}</footer>
</body>
</html>

71
install/core/tpl/main.tpl Normal file
View File

@@ -0,0 +1,71 @@
<form id="nav">
<div class="panel-body">
<div id="msg-box" class="alert hide"></div>
<div class="row">
<div class="col-md-12">
<div style="text-align: center">
<div class="content-img margin-bottom">
<img class="devices" src="img/start.png" alt="EspoCRM" style="border-radius: var(--border-radius);">
</div>
{$langs['labels']['Main page header']}
</div>
</div>
</div>
<div class="row margin-top">
<div class="cell cell-language col-md-4">
<label class="field-label-language control-label">{$langs['fields']['Choose your language']}</label>
<div class="field field-language">
<select name="user-lang" class="form-control">
{foreach from=$languageList item=lbl key=val}
{if $val == $fields['user-lang'].value}
<option selected="selected" value="{$val}">{$lbl}</option>
{else}
<option value="{$val}">{$lbl}</option>
{/if}
{/foreach}
</select>
</div>
</div>
<div class="cell cell-theme col-md-4">
<label class="field-label-theme control-label">{$themeLabel}</label>
<div class="field field-language">
<select name="theme" class="form-control">
{foreach from=$themes item=lbl key=val}
{if $val == $fields['theme'].value}
<option selected="selected" value="{$val}">{$lbl}</option>
{else}
<option value="{$val}">{$lbl}</option>
{/if}
{/foreach}
</select>
</div>
</div>
<div class="cell cell-website col-md-4" style="padding-top: 24px; text-align: right;">
<a
target="_blank"
href="https://www.espocrm.com/documentation/administration/installation/"
style="font-weight: 600;"
>{$langs['labels']['Installation Guide']}</a>
</div>
</div>
</div>
<footer class="modal-footer">
<button class="btn btn-primary btn-s-wide" type="button" id="start">{$langs['labels']['Start']}</button>
</footer>
</form>
<script>
{literal}
$(function(){
{/literal}
var langs = {$langsJs};
{literal}
var installScript = new InstallScript({action: 'main', langs: langs});
})
{/literal}
</script>

View File

@@ -0,0 +1,121 @@
<div class="setup-confirmation panel-body body">
<div id="msg-box" class="alert hide"></div>
<form id="nav">
<div class="row">
<table class="table table-striped">
<thead>
<tr>
<th colspan="3">{$langs['labels']['PHP Configuration']}</th>
</tr>
</thead>
<tbody>
{foreach from=$phpRequirementList key=name item=value}
<tr class="list-row">
<td class="cell col-md-5">
{if isset($langs['systemRequirements'][$name])}
{$langs['systemRequirements'][{$name}]}
{else}
{$name}
{/if}
</td>
<td class="cell col-md-3">{$value['actual']}</td>
<td class="cell col-md-4">
{if $value['acceptable'] eq true} <span class="text-success">{$langs['labels']['Success']}</span> {else} <span class="text-danger">{$langs['labels']['Fail']}
{if $value['type'] eq 'lib'} ({$langs['labels']['extension is missing']}) {/if}
{if $value['type'] eq 'param'} ({$value['required']} {$langs['labels']['is recommended']}) {/if}
</span> {/if}
</td>
</tr>
{/foreach}
</tbody>
</table>
<table class="table table-striped">
<thead>
<tr>
<th colspan="2">{$langs['labels']['MySQL Configuration']}</th>
</tr>
</thead>
<tbody>
{foreach from=$mysqlRequirementList key=name item=value}
<tr class="list-row">
<td class="cell col-md-5">
{if isset($langs['systemRequirements'][$name])}
{$langs['systemRequirements'][{$name}]}
{else}
{$name}
{/if}
</td>
<td class="cell col-md-3">{$value['actual']}</td>
<td class="cell col-md-4">
{if $value['acceptable'] eq true} <span class="text-success">{$langs['labels']['Success']}</span> {else} <span class="text-danger">{$langs['labels']['Fail']}
{if $value['type'] eq 'param'} ({$value['required']} {$langs['labels']['is recommended']}) {/if}
</span> {/if}
</td>
</tr>
{/foreach}
</tbody>
</table>
<table class="table table-striped">
<thead>
<tr>
<th colspan="2">{$langs['labels']['Permission Requirements']}</th>
</tr>
</thead>
<tbody>
{foreach from=$permissionRequirementList key=name item=value}
<tr class="list-row">
<td class="cell col-md-5">
{if isset($langs['systemRequirements'][$name])}
{$langs['systemRequirements'][{$name}]}
{else}
{$name}
{/if}
</td>
<td class="cell col-md-3">{$langs['systemRequirements'][{$value['type']}]}</td>
<td class="cell col-md-4">
{if $value['acceptable'] eq true} <span class="text-success">{$langs['labels']['Success']}</span> {else} <span class="text-danger">{$langs['labels']['Fail']}</span> {/if}
</td>
</tr>
{/foreach}
</tbody>
</table>
<div class="cell cell-website pull-right margin-top" style="text-align: right">
<a
target="_blank"
href="https://www.espocrm.com/documentation/administration/server-configuration/"
style="font-weight: 600;"
>{$langs['labels']['Configuration Instructions']}</a>
</div>
</div>
</form>
<div class="space"></div>
</div>
<footer class="modal-footer">
<button class="btn btn-default btn-s-wide pull-left" type="button" id="back">{$langs['labels']['Back']}</button>
<button class="btn btn-warning btn-s-wide" type="button" id="re-check">{$langs['labels']['Re-check']}</button>
<button class="btn btn-primary btn-s-wide" type="button" id="next">{$langs['labels']['Install']}</button>
</footer>
<script>
{literal}
$(function(){
{/literal}
var opt = {
action: 'setupConfirmation',
langs: {$langsJs},
modRewriteUrl: '{$modRewriteUrl}',
apiPath: '{$apiPath}',
serverType: '{$serverType}',
OS: '{$OS}'
}
{literal}
var installScript = new InstallScript(opt);
jQuery('#re-check').click(function(){
installScript.goTo('setupConfirmation');
});
})
{/literal}
</script>

View File

@@ -0,0 +1,44 @@
<div class="panel-body body">
<div id="msg-box" class="alert hide"></div>
<form id="nav">
<div class="row">
<div class=" col-md-12">
<div class="row">
<div class="cell cell-website col-sm-12 form-group">
<div class="field field-website">
<textarea rows="16" class="license-field form-control">{$license}</textarea>
</div>
</div>
</div>
</div>
</div>
<div class="cell cell-website form-group">
<label class="point-lbl" for="license-agree" style="user-select: none;">
<input
type="checkbox"
name="license-agree"
id="license-agree"
class="input-checkbox form-checkbox"
value="1"
{if $fields['license-agree'].value}checked="checked"{/if}
>
{$langs['labels']['I accept the agreement']}
</label>
</div>
</form>
</div>
<footer class="modal-footer">
<button class="btn btn-default btn-s-wide pull-left" type="button" id="back">{$langs['labels']['Back']}</button>
<button class="btn btn-primary btn-s-wide" type="button" id="next">{$langs['labels']['Next']}</button>
</footer>
<script>
{literal}
$(function(){
{/literal}
var langs = {$langsJs};
{literal}
var installScript = new InstallScript({action: 'step1', langs: langs});
})
{/literal}
</script>

View File

@@ -0,0 +1,90 @@
<div class="panel-body body">
<div id="msg-box" class="alert hide"></div>
<form id="nav" autocomplete="off">
<div class="row">
<div class=" col-md-6">
<div class="row">
<div class="cell cell-db-platform col-sm-12 form-group">
<label class="field-label-db-platform control-label">{$langs['fields']['Platform']}</label>
<div class="field field-db-platform">
<select
name="db-platform"
class="main-element form-control"
>
{foreach from=$platforms item=lbl key=val}
{if $val == $fields['db-platform'].value}
<option selected="selected" value="{$val}">{$lbl}</option>
{else}
<option value="{$val}">{$lbl}</option>
{/if}
{/foreach}
</select>
</div>
</div>
<div class="cell cell-website col-sm-12 form-group">
<label class="field-label-website control-label">{$langs['fields']['Host Name']} *</label>
<div class="field field-website">
<input type="text" value="{$fields['host-name'].value}" name="host-name" class="main-element form-control">
</div>
</div>
<div class="cell cell-website col-sm-12 form-group">
<label class="field-label-website control-label">{$langs['fields']['Database Name']} *</label>
<div class="field field-website">
<input type="text" value="{$fields['db-name'].value}" name="db-name" class="main-element form-control">
</div>
</div>
<div class="cell cell-website col-sm-12 form-group">
<label class="field-label-website control-label">{$langs['fields']['Database User Name']} *</label>
<div class="field field-website">
<input type="text" value="{$fields['db-user-name'].value}" name="db-user-name" class="main-element form-control" autocomplete="off">
</div>
</div>
<div class="cell cell-website col-sm-12 form-group">
<label class="field-label-website control-label">{$langs['fields']['Database User Password']}</label>
<div class="field field-website">
<input type="password" value="{$fields['db-user-password'].value}" name="db-user-password" class="main-element form-control" autocomplete="off">
</div>
</div>
</div>
</div>
<div class=" col-md-6">
<div class="row">
<div class="cell cell-website col-sm-12 form-group">
<div class="label-description">
{$langs['labels']['Database Settings Description']}
</div>
</div>
</div>
</div>
</div>
</form>
<div class="row">
<div class=" col-md-6">
<div class="row">
<div class="cell cell-website col-sm-12 form-group">
<div class="btn-panel">
<button class="btn btn-default" type="button" id="test-connection">{$langs['labels']['Test settings']}</button>
</div>
</div>
</div>
</div>
</div>
</div>
<footer class="modal-footer">
<button class="btn btn-default btn-s-wide pull-left" type="button" id="back">{$langs['labels']['Back']}</button>
<button class="btn btn-primary btn-s-wide" type="button" id="next">{$langs['labels']['Next']}</button>
</footer>
<script>
{literal}
$(function(){
{/literal}
var langs = {$langsJs};
{literal}
var installScript = new InstallScript({action: 'step2', langs: langs});
})
{/literal}
</script>

View File

@@ -0,0 +1,57 @@
<div class="panel-body body">
<div id="msg-box" class="alert hide"></div>
<form id="nav">
<div class="row">
<div class=" col-md-6">
<div class="row">
<div class="cell cell-website col-sm-12 form-group">
<label class="field-label-website control-label">{$langs['fields']['User Name']} *</label>
<div class="field field-website">
<input type="text" value="{$fields['user-name'].value}" name="user-name" class="main-element form-control" autocomplete="off">
</div>
</div>
</div>
<div class="row">
<div class="cell cell-website col-sm-12 form-group">
<label class="field-label-website control-label">{$langs['fields']['Password']} *</label>
<div class="field field-website">
<input type="password" value="{$fields['user-pass'].value}" name="user-pass" class="main-element form-control" autocomplete="off">
</div>
</div>
</div>
<div class="row">
<div class="cell cell-website col-sm-12 form-group">
<label class="field-label-website control-label">{$langs['fields']['Confirm Password']} *</label>
<div class="field field-website">
<input type="password" value="{$fields['user-confirm-pass'].value}" name="user-confirm-pass" class="main-element form-control" autocomplete="off">
</div>
</div>
</div>
</div>
</div>
</form>
</div>
<footer class="modal-footer">
<button class="btn btn-primary btn-s-wide" type="button" id="next">{$langs['labels']['Next']}</button>
</footer>
<script>
{literal}
$(function(){
{/literal}
var opt = {
action: 'step3',
langs: {$langsJs},
modRewriteUrl: '{$modRewriteUrl}',
apiPath: '{$apiPath}',
serverType: '{$serverType}',
OS: '{$OS}'
}
{literal}
var installScript = new InstallScript(opt);
})
{/literal}
</script>

151
install/core/tpl/step4.tpl Normal file
View File

@@ -0,0 +1,151 @@
<div class="panel-body body">
<div id="msg-box" class="alert hide"></div>
<form id="nav">
<div class="row">
<div class="col-md-8" style="width:100%" >
<div class="row">
<div class="cell cell-dateFormat col-sm-6 form-group">
<label class="field-label-dateFormat control-label">
{$langs['fields']['Date Format']}
</label>
<div class="field field-dateFormat">
<select name="dateFormat" class="form-control main-element">
{foreach from=$fields['dateFormat'].options item=val}
{if $val == $fields['dateFormat'].value}
<option selected="selected" value="{$val}">{$val}</option>
{else}
<option value="{$val}">{$val}</option>
{/if}
{/foreach}
</select>
</div>
</div>
<div class="cell cell-timeFormat col-sm-6 form-group">
<label class="field-label-timeFormat control-label">
{$langs['fields']['Time Format']}
</label>
<div class="field field-timeFormat">
<select name="timeFormat" class="form-control main-element">
{foreach from=$fields['timeFormat'].options item=val}
{if $val == $fields['timeFormat'].value}
<option selected="selected" value="{$val}">{$val}</option>
{else}
<option value="{$val}">{$val}</option>
{/if}
{/foreach}
</select>
</div>
</div>
</div>
<div class="row">
<div class="cell cell-timeZone col-sm-6 form-group">
<label class="field-label-timeZone control-label">
{$langs['fields']['Time Zone']}
</label>
<div class="field field-timeZone">
<select name="timeZone" class="form-control main-element">
{foreach from=$defaultSettings['timeZone'].options item=lbl key=val}
{if $val == $fields['timeZone'].value}
<option selected="selected" value="{$val}">{$lbl}</option>
{else}
<option value="{$val}">{$lbl}</option>
{/if}
{/foreach}
</select>
</div>
</div>
<div class="cell cell-weekStart col-sm-6 form-group">
<label class="field-label-weekStart control-label">
{$langs['fields']['First Day of Week']}
</label>
<div class="field field-weekStart">
<select name="weekStart" class="form-control main-element">
{foreach from=$defaultSettings['weekStart'].options item=lbl key=val}
{if $val == $fields['weekStart'].value}
<option selected="selected" value="{$val}">{$lbl}</option>
{else}
<option value="{$val}">{$lbl}</option>
{/if}
{/foreach}
</select>
</div>
</div>
</div>
<div class="row">
<div class="cell cell-defaultCurrency col-sm-6 form-group">
<label class="field-label-defaultCurrency control-label">
{$langs['fields']['Default Currency']}
</label>
<div class="field field-defaultCurrency">
<select name="defaultCurrency" class="form-control main-element">
{foreach from=$defaultSettings['defaultCurrency'].options item=lbl key=val}
{if $val == $fields['defaultCurrency'].value}
<option selected="selected" value="{$val}">{$lbl}</option>
{else}
<option value="{$val}">{$lbl}</option>
{/if}
{/foreach}
</select>
</div>
</div>
</div>
<div class="row">
<div class="cell cell-thousandSeparator col-sm-6 form-group">
<label class="field-label-thousandSeparator control-label">
{$langs['fields']['Thousand Separator']}
</label>
<div class="field field-thousandSeparator">
<input type="text" class="main-element form-control" name="thousandSeparator" value="{$fields['thousandSeparator'].value}" maxlength="1">
</div>
</div>
<div class="cell cell-decimalMark col-sm-6 form-group">
<label class="field-label-decimalMark control-label">
{$langs['fields']['Decimal Mark']} *</label>
<div class="field field-decimalMark">
<input type="text" class="main-element form-control" name="decimalMark" value="{$fields['decimalMark'].value}" maxlength="1">
</div>
</div>
</div>
<div class="row">
<div class="cell cell-language col-sm-6 form-group">
<label class="field-label-language control-label">
{$langs['fields']['Language']}
</label>
<div class="field field-language">
<select name="language" class="form-control main-element">
{foreach from=$defaultSettings['language'].options item=lbl key=val}
{if $val == $fields['language'].value}
<option selected="selected" value="{$val}">{$lbl}</option>
{else}
<option value="{$val}">{$lbl}</option>
{/if}
{/foreach}
</select>
</div>
</div>
</div>
</div>
</div>
</form>
</div>
<footer class="modal-footer">
<button class="btn btn-default btn-s-wide pull-left" type="button" id="back">{$langs['labels']['Back']}</button>
<button class="btn btn-primary btn-s-wide" type="button" id="next">{$langs['labels']['Next']}</button>
</footer>
<script>
{literal}
$(function(){
{/literal}
var langs = {$langsJs};
{literal}
var installScript = new InstallScript({action: 'step4', langs: langs});
})
{/literal}
</script>

132
install/core/tpl/step5.tpl Normal file
View File

@@ -0,0 +1,132 @@
<div class="panel-body body">
<div id="msg-box" class="alert hide"></div>
<form id="nav" autocomplete="off">
<div class="row">
<div class="col-md-8" style="width:100%" >
<div class="row">
<div class="cell cell-outboundEmailFromName col-sm-6 form-group">
<label class="field-label-outboundEmailFromName control-label">
{$langs['fields']['From Name']}</label>
<div class="field field-outboundEmailFromName">
<input type="text" class="main-element form-control" name="outboundEmailFromName" value="{$fields['outboundEmailFromName'].value}">
</div>
</div>
<div class="cell cell-outboundEmailFromAddress col-sm-6 form-group">
<label class="field-label-outboundEmailFromAddress control-label">
{$langs['fields']['From Address']}</label>
<div class="field field-outboundEmailFromAddress">
<input type="text" class="main-element form-control" name="outboundEmailFromAddress" value="{$fields['outboundEmailFromAddress'].value}">
</div>
</div>
</div>
<div class="row">
<div class="cell cell-outboundEmailIsShared col-sm-6 form-group">
<label class="field-label-outboundEmailIsShared control-label">
{$langs['fields']['Is Shared']}
</label>
<div class="field field-outboundEmailIsShared">
<input
type="checkbox"
{if $fields['outboundEmailIsShared'].value} checked {/if}
name="outboundEmailIsShared"
class="main-element form-checkbox"
>
</div>
</div>
</div>
<br>
<div class="row">
<div class="cell cell-smtpServer col-sm-6 form-group">
<label class="field-label-smtpServer control-label">
{$langs['fields']['smtpServer']}
</label>
<div class="field field-smtpServer">
<input type="text" class="main-element form-control" name="smtpServer" value="{$fields['smtpServer'].value}">
</div>
</div>
<div class="cell cell-smtpPort col-sm-6 form-group">
<label class="field-label-smtpPort control-label">
{$langs['fields']['smtpPort']}
</label>
<div class="field field-smtpPort">
<input type="text" class="main-element form-control" name="smtpPort" value="{$fields['smtpPort'].value}" pattern="[\-]?[0-9]*" maxlength="4">
</div>
</div>
</div>
<div class="row">
<div class="cell cell-smtpAuth col-sm-6 form-group">
<label class="field-label-smtpAuth control-label">
{$langs['fields']['smtpAuth']}
</label>
<div class="field field-smtpAuth">
<input
type="checkbox"
name="smtpAuth"
class="main-element form-checkbox" {if $fields['smtpAuth'].value} checked {/if}
>
</div>
</div>
<div class="cell cell-smtpSecurity col-sm-6 form-group">
<label class="field-label-smtpSecurity control-label">
{$langs['fields']['smtpSecurity']}
</label>
<div class="field field-smtpSecurity">
<select name="smtpSecurity" class="form-control main-element">
{foreach from=$defaultSettings['smtpSecurity'].options item=lbl key=val}
{if $val == $fields['smtpSecurity'].value}
<option selected="selected" value="{$val}">{$lbl}</option>
{else}
<option value="{$val}">{$lbl}</option>
{/if}
{/foreach}
</select>
</div>
</div>
</div>
<div class="row">
<div class="cell cell-smtpUsername col-sm-6 form-group {if !$fields['smtpAuth'].value} hide {/if}">
<label class="field-label-smtpUsername control-label">
{$langs['fields']['smtpUsername']} *
</label>
<div class="field field-smtpUsername">
<input type="text" class="main-element form-control" name="smtpUsername" value="{$fields['smtpUsername'].value}" autocomplete="off">
</div>
</div>
</div>
<div class="row">
<div class="cell cell-smtpPassword col-sm-6 form-group {if !$fields['smtpAuth'].value} hide {/if}">
<label class="field-label-smtpPassword control-label">
{$langs['fields']['smtpPassword']}
</label>
<div class="field field-smtpPassword">
<input type="password" class="main-element form-control" name="smtpPassword" value="{$fields['smtpPassword'].value}" autocomplete="off">
</div>
</div>
</div>
</div>
</div>
</form>
</div>
<footer class="modal-footer">
<button class="btn btn-default btn-s-wide pull-left" type="button" id="back">{$langs['labels']['Back']}</button>
<button class="btn btn-primary btn-s-wide" type="button" id="next">{$langs['labels']['Next']}</button>
</footer>
<script>
{literal}
$(function(){
{/literal}
var langs = {$langsJs};
{literal}
var installScript = new InstallScript({action: 'step5', langs: langs});
})
{/literal}
</script>

235
install/entry.php Normal file
View File

@@ -0,0 +1,235 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM Open Source CRM application.
* Copyright (C) 2014-2025 EspoCRM, Inc.
* Website: https://www.espocrm.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
use Espo\Core\Utils\Client\LoaderParamsProvider;
use Espo\Core\Utils\Json;
use Espo\Core\Utils\Util;
use Espo\Core\Utils\Client\DevModeJsFileListProvider;
use Espo\Core\Utils\File\Manager as FileManager;
if (session_status() !== \PHP_SESSION_ACTIVE) {
session_start();
}
if (!isset($postData)) {
require_once('install/core/PostData.php');
$postData = new PostData();
}
$allPostData = $postData->getAll();
$action = (!empty($allPostData['action']))? $allPostData['action'] : 'main';
require_once('install/core/Utils.php');
if (!Utils::checkActionExists($action)) {
die('This page does not exist.');
}
// temp save all settings
$ignoredFields = [
'installProcess',
'dbName',
'hostName',
'dbUserName',
'dbUserPass',
'dbDriver',
];
if (!empty($allPostData)) {
foreach ($allPostData as $key => $val) {
if (!in_array($key, $ignoredFields)) {
$_SESSION['install'][$key] = trim($val);
}
}
}
// get user selected language
$userLang = (!empty($_SESSION['install']['user-lang']))? $_SESSION['install']['user-lang'] : 'en_US';
require_once 'install/core/Language.php';
$language = new Language();
$langs = $language->get($userLang);
$sanitizedLangs = Util::sanitizeHtml($langs);
//END: get user selected language
$config = include('install/core/config.php');
require_once 'install/core/SystemHelper.php';
$systemHelper = new SystemHelper();
$systemConfig = include('application/Espo/Resources/defaults/systemConfig.php');
if (
isset($systemConfig['requiredPhpVersion']) &&
version_compare(PHP_VERSION, $systemConfig['requiredPhpVersion'], '<')
) {
die(
str_replace(
"{minVersion}",
$systemConfig['requiredPhpVersion'],
$sanitizedLangs['messages']['phpVersion']
) . ".\n"
);
}
if (!$systemHelper->initWritable()) {
$dir = $systemHelper->getWritableDir();
$message = $sanitizedLangs['messages']['Bad init Permission'];
$message = str_replace('{*}', $dir, $message);
$message = str_replace('{C}', $systemHelper->getPermissionCommands([$dir, ''], '775'), $message);
$message = str_replace('{CSU}', $systemHelper->getPermissionCommands([$dir, ''], '775', true), $message);
die($message . "\n");
}
require_once 'install/vendor/smarty/libs/Smarty.class.php';
require_once 'install/core/Installer.php';
require_once 'install/core/Utils.php';
$smarty = new Smarty();
$installer = new Installer();
// check if app was installed
if ($installer->isInstalled() && !isset($_SESSION['install']['installProcess'])) {
if (isset($_SESSION['install']['redirected']) && $_SESSION['install']['redirected']) {
die('The installation is disabled. It can be enabled in config files.');
}
$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$url = preg_replace('/install\/?/', '', $url, 1);
$url = strtok($url, '#');
$url = strtok($url, '?');
$_SESSION['install']['redirected'] = true;
header("Location: {$url}");
exit;
}
$_SESSION['install']['installProcess'] = true;
$smarty->caching = false;
$smarty->setTemplateDir('install/core/tpl');
$smarty->assign("version", $installer->getVersion());
$smarty->assign("langs", $sanitizedLangs);
$smarty->assign("langsJs", json_encode($langs));
// include actions and set tpl name
switch ($action) {
case 'main':
$smarty->assign("languageList", $installer->getLanguageList());
break;
case 'step3':
case 'errors':
case 'setupConfirmation':
$smarty->assign("apiPath", $systemHelper->getApiPath());
$modRewriteUrl = $systemHelper->getModRewriteUrl();
$smarty->assign("modRewriteUrl", $modRewriteUrl);
$serverType = $systemHelper->getServerType();
$smarty->assign("serverType", $serverType);
$os = $systemHelper->getOS();
$smarty->assign("OS", $os);
break;
case 'step4':
$defaultSettings = $installer->getDefaultSettings();
$smarty->assign("defaultSettings", $defaultSettings);
break;
case 'step5':
$defaultSettings = $installer->getDefaultSettings();
$smarty->assign("defaultSettings", $defaultSettings);
break;
}
$actionFile = 'install/core/actions/' . $action . '.php';
$tplName = $action . '.tpl';
$smarty->assign('tplName', $tplName);
$smarty->assign('action', ucfirst($action));
$smarty->assign('config', $config);
$smarty->assign('installerConfig', $installer->getInstallerConfigData());
$theme = $_SESSION['install']['theme'] ?? 'Espo';
$stylesheet = $installer->getMetadata()->get(['themes', $theme, 'stylesheet']);
$smarty->assign('stylesheet', $stylesheet);
if (Utils::checkActionExists($action)) {
include $actionFile;
}
$theme = $_SESSION['install']['theme'] ?? $installer->getConfig()->get('theme');
$smarty->assign('logoSrc', $installer->getLogoSrc($theme));
$loaderParamsProvider = $installer->getInjectableFactory()->create(LoaderParamsProvider::class);
if (!empty($actionFile) && file_exists('install/core/tpl/' . $tplName)) {
/* check if EspoCRM is built */
$isBuilt = file_exists('client/lib/espo.js');
$smarty->assign('isBuilt', $isBuilt);
$libFileList = $isBuilt ?
$installer->getMetadata()->get(['app', 'client', 'scriptList']) ?? [] :
(new DevModeJsFileListProvider(new FileManager()))->get();
$smarty->assign('libFileList', $libFileList);
$loaderParams = Json::encode([
'basePath' => '../',
'libsConfig' => $loaderParamsProvider->getLibsConfig(),
'aliasMap' => $loaderParamsProvider->getAliasMap(),
]);
$smarty->assign('loaderParams', $loaderParams);
$smarty->display('index.tpl');
}

165
install/vendor/smarty/COPYING.lib vendored Normal file
View File

@@ -0,0 +1,165 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

574
install/vendor/smarty/README vendored Normal file
View File

@@ -0,0 +1,574 @@
Smarty 3.1.16
Author: Monte Ohrt <monte at ohrt dot com >
Author: Uwe Tews
AN INTRODUCTION TO SMARTY 3
NOTICE FOR 3.1 release:
Please see the SMARTY_3.1_NOTES.txt file that comes with the distribution.
NOTICE for 3.0.5 release:
Smarty now follows the PHP error_reporting level by default. If PHP does not mask E_NOTICE and you try to access an unset template variable, you will now get an E_NOTICE warning. To revert to the old behavior:
$smarty->error_reporting = E_ALL & ~E_NOTICE;
NOTICE for 3.0 release:
IMPORTANT: Some API adjustments have been made between the RC4 and 3.0 release.
We felt it is better to make these now instead of after a 3.0 release, then have to
immediately deprecate APIs in 3.1. Online documentation has been updated
to reflect these changes. Specifically:
---- API CHANGES RC4 -> 3.0 ----
$smarty->register->*
$smarty->unregister->*
$smarty->utility->*
$samrty->cache->*
Have all been changed to local method calls such as:
$smarty->clearAllCache()
$smarty->registerFoo()
$smarty->unregisterFoo()
$smarty->testInstall()
etc.
Registration of function, block, compiler, and modifier plugins have been
consolidated under two API calls:
$smarty->registerPlugin(...)
$smarty->unregisterPlugin(...)
Registration of pre, post, output and variable filters have been
consolidated under two API calls:
$smarty->registerFilter(...)
$smarty->unregisterFilter(...)
Please refer to the online documentation for all specific changes:
http://www.smarty.net/documentation
----
The Smarty 3 API has been refactored to a syntax geared
for consistency and modularity. The Smarty 2 API syntax is still supported, but
will throw a deprecation notice. You can disable the notices, but it is highly
recommended to adjust your syntax to Smarty 3, as the Smarty 2 syntax must run
through an extra rerouting wrapper.
Basically, all Smarty methods now follow the "fooBarBaz" camel case syntax. Also,
all Smarty properties now have getters and setters. So for example, the property
$smarty->cache_dir can be set with $smarty->setCacheDir('foo/') and can be
retrieved with $smarty->getCacheDir().
Some of the Smarty 3 APIs have been revoked such as the "is*" methods that were
just duplicate functions of the now available "get*" methods.
Here is a rundown of the Smarty 3 API:
$smarty->fetch($template, $cache_id = null, $compile_id = null, $parent = null)
$smarty->display($template, $cache_id = null, $compile_id = null, $parent = null)
$smarty->isCached($template, $cache_id = null, $compile_id = null)
$smarty->createData($parent = null)
$smarty->createTemplate($template, $cache_id = null, $compile_id = null, $parent = null)
$smarty->enableSecurity()
$smarty->disableSecurity()
$smarty->setTemplateDir($template_dir)
$smarty->addTemplateDir($template_dir)
$smarty->templateExists($resource_name)
$smarty->loadPlugin($plugin_name, $check = true)
$smarty->loadFilter($type, $name)
$smarty->setExceptionHandler($handler)
$smarty->addPluginsDir($plugins_dir)
$smarty->getGlobal($varname = null)
$smarty->getRegisteredObject($name)
$smarty->getDebugTemplate()
$smarty->setDebugTemplate($tpl_name)
$smarty->assign($tpl_var, $value = null, $nocache = false)
$smarty->assignGlobal($varname, $value = null, $nocache = false)
$smarty->assignByRef($tpl_var, &$value, $nocache = false)
$smarty->append($tpl_var, $value = null, $merge = false, $nocache = false)
$smarty->appendByRef($tpl_var, &$value, $merge = false)
$smarty->clearAssign($tpl_var)
$smarty->clearAllAssign()
$smarty->configLoad($config_file, $sections = null)
$smarty->getVariable($variable, $_ptr = null, $search_parents = true, $error_enable = true)
$smarty->getConfigVariable($variable)
$smarty->getStreamVariable($variable)
$smarty->getConfigVars($varname = null)
$smarty->clearConfig($varname = null)
$smarty->getTemplateVars($varname = null, $_ptr = null, $search_parents = true)
$smarty->clearAllCache($exp_time = null, $type = null)
$smarty->clearCache($template_name, $cache_id = null, $compile_id = null, $exp_time = null, $type = null)
$smarty->registerPlugin($type, $tag, $callback, $cacheable = true, $cache_attr = array())
$smarty->registerObject($object_name, $object_impl, $allowed = array(), $smarty_args = true, $block_methods = array())
$smarty->registerFilter($type, $function_name)
$smarty->registerResource($resource_type, $function_names)
$smarty->registerDefaultPluginHandler($function_name)
$smarty->registerDefaultTemplateHandler($function_name)
$smarty->unregisterPlugin($type, $tag)
$smarty->unregisterObject($object_name)
$smarty->unregisterFilter($type, $function_name)
$smarty->unregisterResource($resource_type)
$smarty->compileAllTemplates($extension = '.tpl', $force_compile = false, $time_limit = 0, $max_errors = null)
$smarty->clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = null)
$smarty->testInstall()
// then all the getters/setters, available for all properties. Here are a few:
$caching = $smarty->getCaching(); // get $smarty->caching
$smarty->setCaching(true); // set $smarty->caching
$smarty->setDeprecationNotices(false); // set $smarty->deprecation_notices
$smarty->setCacheId($id); // set $smarty->cache_id
$debugging = $smarty->getDebugging(); // get $smarty->debugging
FILE STRUCTURE
The Smarty 3 file structure is similar to Smarty 2:
/libs/
Smarty.class.php
/libs/sysplugins/
internal.*
/libs/plugins/
function.mailto.php
modifier.escape.php
...
A lot of Smarty 3 core functionality lies in the sysplugins directory; you do
not need to change any files here. The /libs/plugins/ folder is where Smarty
plugins are located. You can add your own here, or create a separate plugin
directory, just the same as Smarty 2. You will still need to create your own
/cache/, /templates/, /templates_c/, /configs/ folders. Be sure /cache/ and
/templates_c/ are writable.
The typical way to use Smarty 3 should also look familiar:
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->assign('foo','bar');
$smarty->display('index.tpl');
However, Smarty 3 works completely different on the inside. Smarty 3 is mostly
backward compatible with Smarty 2, except for the following items:
*) Smarty 3 is PHP 5 only. It will not work with PHP 4.
*) The {php} tag is disabled by default. Enable with $smarty->allow_php_tag=true.
*) Delimiters surrounded by whitespace are no longer treated as Smarty tags.
Therefore, { foo } will not compile as a tag, you must use {foo}. This change
Makes Javascript/CSS easier to work with, eliminating the need for {literal}.
This can be disabled by setting $smarty->auto_literal = false;
*) The Smarty 3 API is a bit different. Many Smarty 2 API calls are deprecated
but still work. You will want to update your calls to Smarty 3 for maximum
efficiency.
There are many things that are new to Smarty 3. Here are the notable items:
LEXER/PARSER
============
Smarty 3 now uses a lexing tokenizer for its parser/compiler. Basically, this
means Smarty has some syntax additions that make life easier such as in-template
math, shorter/intuitive function parameter options, infinite function recursion,
more accurate error handling, etc.
WHAT IS NEW IN SMARTY TEMPLATE SYNTAX
=====================================
Smarty 3 allows expressions almost anywhere. Expressions can include PHP
functions as long as they are not disabled by the security policy, object
methods and properties, etc. The {math} plugin is no longer necessary but
is still supported for BC.
Examples:
{$x+$y} will output the sum of x and y.
{$foo = strlen($bar)} function in assignment
{assign var=foo value= $x+$y} in attributes
{$foo = myfunct( ($x+$y)*3 )} as function parameter
{$foo[$x+3]} as array index
Smarty tags can be used as values within other tags.
Example: {$foo={counter}+3}
Smarty tags can also be used inside double quoted strings.
Example: {$foo="this is message {counter}"}
You can define arrays within templates.
Examples:
{assign var=foo value=[1,2,3]}
{assign var=foo value=['y'=>'yellow','b'=>'blue']}
Arrays can be nested.
{assign var=foo value=[1,[9,8],3]}
There is a new short syntax supported for assigning variables.
Example: {$foo=$bar+2}
You can assign a value to a specific array element. If the variable exists but
is not an array, it is converted to an array before the new values are assigned.
Examples:
{$foo['bar']=1}
{$foo['bar']['blar']=1}
You can append values to an array. If the variable exists but is not an array,
it is converted to an array before the new values are assigned.
Example: {$foo[]=1}
You can use a PHP-like syntax for accessing array elements, as well as the
original "dot" notation.
Examples:
{$foo[1]} normal access
{$foo['bar']}
{$foo['bar'][1]}
{$foo[$x+$x]} index may contain any expression
{$foo[$bar[1]]} nested index
{$foo[section_name]} smarty section access, not array access!
The original "dot" notation stays, and with improvements.
Examples:
{$foo.a.b.c} => $foo['a']['b']['c']
{$foo.a.$b.c} => $foo['a'][$b]['c'] with variable index
{$foo.a.{$b+4}.c} => $foo['a'][$b+4]['c'] with expression as index
{$foo.a.{$b.c}} => $foo['a'][$b['c']] with nested index
note that { and } are used to address ambiguties when nesting the dot syntax.
Variable names themselves can be variable and contain expressions.
Examples:
$foo normal variable
$foo_{$bar} variable name containing other variable
$foo_{$x+$y} variable name containing expressions
$foo_{$bar}_buh_{$blar} variable name with multiple segments
{$foo_{$x}} will output the variable $foo_1 if $x has a value of 1.
Object method chaining is implemented.
Example: {$object->method1($x)->method2($y)}
{for} tag added for looping (replacement for {section} tag):
{for $x=0, $y=count($foo); $x<$y; $x++} .... {/for}
Any number of statements can be used separated by comma as the first
inital expression at {for}.
{for $x = $start to $end step $step} ... {/for}is in the SVN now .
You can use also
{for $x = $start to $end} ... {/for}
In this case the step value will be automaticall 1 or -1 depending on the start and end values.
Instead of $start and $end you can use any valid expression.
Inside the loop the following special vars can be accessed:
$x@iteration = number of iteration
$x@total = total number of iterations
$x@first = true on first iteration
$x@last = true on last iteration
The Smarty 2 {section} syntax is still supported.
New shorter {foreach} syntax to loop over an array.
Example: {foreach $myarray as $var}...{/foreach}
Within the foreach loop, properties are access via:
$var@key foreach $var array key
$var@iteration foreach current iteration count (1,2,3...)
$var@index foreach current index count (0,1,2...)
$var@total foreach $var array total
$var@first true on first iteration
$var@last true on last iteration
The Smarty 2 {foreach} tag syntax is still supported.
NOTE: {$bar[foo]} still indicates a variable inside of a {section} named foo.
If you want to access an array element with index foo, you must use quotes
such as {$bar['foo']}, or use the dot syntax {$bar.foo}.
while block tag is now implemented:
{while $foo}...{/while}
{while $x lt 10}...{/while}
Direct access to PHP functions:
Just as you can use PHP functions as modifiers directly, you can now access
PHP functions directly, provided they are permitted by security settings:
{time()}
There is a new {function}...{/function} block tag to implement a template function.
This enables reuse of code sequences like a plugin function. It can call itself recursively.
Template function must be called with the new {call name=foo...} tag.
Example:
Template file:
{function name=menu level=0}
<ul class="level{$level}">
{foreach $data as $entry}
{if is_array($entry)}
<li>{$entry@key}</li>
{call name=menu data=$entry level=$level+1}
{else}
<li>{$entry}</li>
{/if}
{/foreach}
</ul>
{/function}
{$menu = ['item1','item2','item3' => ['item3-1','item3-2','item3-3' =>
['item3-3-1','item3-3-2']],'item4']}
{call name=menu data=$menu}
Generated output:
* item1
* item2
* item3
o item3-1
o item3-2
o item3-3
+ item3-3-1
+ item3-3-2
* item4
The function tag itself must have the "name" attribute. This name is the tag
name when calling the function. The function tag may have any number of
additional attributes. These will be default settings for local variables.
New {nocache} block function:
{nocache}...{/nocache} will declare a section of the template to be non-cached
when template caching is enabled.
New nocache attribute:
You can declare variable/function output as non-cached with the nocache attribute.
Examples:
{$foo nocache=true}
{$foo nocache} /* same */
{foo bar="baz" nocache=true}
{foo bar="baz" nocache} /* same */
{time() nocache=true}
{time() nocache} /* same */
Or you can also assign the variable in your script as nocache:
$smarty->assign('foo',$something,true); // third param is nocache setting
{$foo} /* non-cached */
$smarty.current_dir returns the directory name of the current template.
You can use strings directly as templates with the "string" resource type.
Examples:
$smarty->display('string:This is my template, {$foo}!'); // php
{include file="string:This is my template, {$foo}!"} // template
VARIABLE SCOPE / VARIABLE STORAGE
=================================
In Smarty 2, all assigned variables were stored within the Smarty object.
Therefore, all variables assigned in PHP were accessible by all subsequent
fetch and display template calls.
In Smarty 3, we have the choice to assign variables to the main Smarty object,
to user-created data objects, and to user-created template objects.
These objects can be chained. The object at the end of a chain can access all
variables belonging to that template and all variables within the parent objects.
The Smarty object can only be the root of a chain, but a chain can be isolated
from the Smarty object.
All known Smarty assignment interfaces will work on the data and template objects.
Besides the above mentioned objects, there is also a special storage area for
global variables.
A Smarty data object can be created as follows:
$data = $smarty->createData(); // create root data object
$data->assign('foo','bar'); // assign variables as usual
$data->config_load('my.conf'); // load config file
$data= $smarty->createData($smarty); // create data object having a parent link to
the Smarty object
$data2= $smarty->createData($data); // create data object having a parent link to
the $data data object
A template object can be created by using the createTemplate method. It has the
same parameter assignments as the fetch() or display() method.
Function definition:
function createTemplate($template, $cache_id = null, $compile_id = null, $parent = null)
The first parameter can be a template name, a smarty object or a data object.
Examples:
$tpl = $smarty->createTemplate('mytpl.tpl'); // create template object not linked to any parent
$tpl->assign('foo','bar'); // directly assign variables
$tpl->config_load('my.conf'); // load config file
$tpl = $smarty->createTemplate('mytpl.tpl',$smarty); // create template having a parent link to the Smarty object
$tpl = $smarty->createTemplate('mytpl.tpl',$data); // create template having a parent link to the $data object
The standard fetch() and display() methods will implicitly create a template object.
If the $parent parameter is not specified in these method calls, the template object
is will link back to the Smarty object as it's parent.
If a template is called by an {include...} tag from another template, the
subtemplate links back to the calling template as it's parent.
All variables assigned locally or from a parent template are accessible. If the
template creates or modifies a variable by using the {assign var=foo...} or
{$foo=...} tags, these new values are only known locally (local scope). When the
template exits, none of the new variables or modifications can be seen in the
parent template(s). This is same behavior as in Smarty 2.
With Smarty 3, we can assign variables with a scope attribute which allows the
availablility of these new variables or modifications globally (ie in the parent
templates.)
Possible scopes are local, parent, root and global.
Examples:
{assign var=foo value='bar'} // no scope is specified, the default 'local'
{$foo='bar'} // same, local scope
{assign var=foo value='bar' scope='local'} // same, local scope
{assign var=foo value='bar' scope='parent'} // Values will be available to the parent object
{$foo='bar' scope='parent'} // (normally the calling template)
{assign var=foo value='bar' scope='root'} // Values will be exported up to the root object, so they can
{$foo='bar' scope='root'} // be seen from all templates using the same root.
{assign var=foo value='bar' scope='global'} // Values will be exported to global variable storage,
{$foo='bar' scope='global'} // they are available to any and all templates.
The scope attribute can also be attached to the {include...} tag. In this case,
the specified scope will be the default scope for all assignments within the
included template.
PLUGINS
=======
Smarty3 are following the same coding rules as in Smarty2.
The only difference is that the template object is passed as additional third parameter.
smarty_plugintype_name (array $params, object $smarty, object $template)
The Smarty 2 plugins are still compatible as long as they do not make use of specific Smarty2 internals.
TEMPLATE INHERITANCE:
=====================
With template inheritance you can define blocks, which are areas that can be
overriden by child templates, so your templates could look like this:
parent.tpl:
<html>
<head>
<title>{block name='title'}My site name{/block}</title>
</head>
<body>
<h1>{block name='page-title'}Default page title{/block}</h1>
<div id="content">
{block name='content'}
Default content
{/block}
</div>
</body>
</html>
child.tpl:
{extends file='parent.tpl'}
{block name='title'}
Child title
{/block}
grandchild.tpl:
{extends file='child.tpl'}
{block name='title'}Home - {$smarty.block.parent}{/block}
{block name='page-title'}My home{/block}
{block name='content'}
{foreach $images as $img}
<img src="{$img.url}" alt="{$img.description}" />
{/foreach}
{/block}
We redefined all the blocks here, however in the title block we used {$smarty.block.parent},
which tells Smarty to insert the default content from the parent template in its place.
The content block was overriden to display the image files, and page-title has also be
overriden to display a completely different title.
If we render grandchild.tpl we will get this:
<html>
<head>
<title>Home - Child title</title>
</head>
<body>
<h1>My home</h1>
<div id="content">
<img src="/example.jpg" alt="image" />
<img src="/example2.jpg" alt="image" />
<img src="/example3.jpg" alt="image" />
</div>
</body>
</html>
NOTE: In the child templates everything outside the {extends} or {block} tag sections
is ignored.
The inheritance tree can be as big as you want (meaning you can extend a file that
extends another one that extends another one and so on..), but be aware that all files
have to be checked for modifications at runtime so the more inheritance the more overhead you add.
Instead of defining the parent/child relationships with the {extends} tag in the child template you
can use the resource as follow:
$smarty->display('extends:parent.tpl|child.tpl|grandchild.tpl');
Child {block} tags may optionally have a append or prepend attribute. In this case the parent block content
is appended or prepended to the child block content.
{block name='title' append} My title {/block}
PHP STREAMS:
============
(see online documentation)
VARIBLE FILTERS:
================
(see online documentation)
STATIC CLASS ACCESS AND NAMESPACE SUPPORT
=========================================
You can register a class with optional namespace for the use in the template like:
$smarty->register->templateClass('foo','name\name2\myclass');
In the template you can use it like this:
{foo::method()} etc.
=======================
Please look through it and send any questions/suggestions/etc to the forums.
http://www.phpinsider.com/smarty-forum/viewtopic.php?t=14168
Monte and Uwe

View File

@@ -0,0 +1,5 @@
title = Welcome to Smarty!
cutoff_size = 40
[setup]
bold = true

30
install/vendor/smarty/demo/index.php vendored Normal file
View File

@@ -0,0 +1,30 @@
<?php
/**
* Example Application
* @package Example-application
*/
require '../libs/Smarty.class.php';
$smarty = new Smarty;
//$smarty->force_compile = true;
$smarty->debugging = true;
$smarty->caching = true;
$smarty->cache_lifetime = 120;
$smarty->assign("Name","Fred Irving Johnathan Bradley Peppergill",true);
$smarty->assign("FirstName",array("John","Mary","James","Henry"));
$smarty->assign("LastName",array("Doe","Smith","Johnson","Case"));
$smarty->assign("Class",array(array("A","B","C","D"), array("E", "F", "G", "H"),
array("I", "J", "K", "L"), array("M", "N", "O", "P")));
$smarty->assign("contacts", array(array("phone" => "1", "fax" => "2", "cell" => "3"),
array("phone" => "555-4444", "fax" => "555-3333", "cell" => "760-1234")));
$smarty->assign("option_values", array("NY","NE","KS","IA","OK","TX"));
$smarty->assign("option_output", array("New York","Nebraska","Kansas","Iowa","Oklahoma","Texas"));
$smarty->assign("option_selected", "NE");
$smarty->display('index.tpl');

View File

@@ -0,0 +1,80 @@
<?php
/**
* APC CacheResource
*
* CacheResource Implementation based on the KeyValueStore API to use
* memcache as the storage resource for Smarty's output caching.
* *
* @package CacheResource-examples
* @author Uwe Tews
*/
class Smarty_CacheResource_Apc extends Smarty_CacheResource_KeyValueStore
{
public function __construct()
{
// test if APC is present
if (!function_exists('apc_cache_info')) {
throw new Exception('APC Template Caching Error: APC is not installed');
}
}
/**
* Read values for a set of keys from cache
*
* @param array $keys list of keys to fetch
* @return array list of values with the given keys used as indexes
* @return boolean true on success, false on failure
*/
protected function read(array $keys)
{
$_res = array();
$res = apc_fetch($keys);
foreach ($res as $k => $v) {
$_res[$k] = $v;
}
return $_res;
}
/**
* Save values for a set of keys to cache
*
* @param array $keys list of values to save
* @param int $expire expiration time
* @return boolean true on success, false on failure
*/
protected function write(array $keys, $expire=null)
{
foreach ($keys as $k => $v) {
apc_store($k, $v, $expire);
}
return true;
}
/**
* Remove values from cache
*
* @param array $keys list of keys to delete
* @return boolean true on success, false on failure
*/
protected function delete(array $keys)
{
foreach ($keys as $k) {
apc_delete($k);
}
return true;
}
/**
* Remove *all* values from cache
*
* @return boolean true on success, false on failure
*/
protected function purge()
{
return apc_clear_cache('user');
}
}

View File

@@ -0,0 +1,95 @@
<?php
/**
* Memcache CacheResource
*
* CacheResource Implementation based on the KeyValueStore API to use
* memcache as the storage resource for Smarty's output caching.
*
* Note that memcache has a limitation of 256 characters per cache-key.
* To avoid complications all cache-keys are translated to a sha1 hash.
*
* @package CacheResource-examples
* @author Rodney Rehm
*/
class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore
{
/**
* memcache instance
* @var Memcache
*/
protected $memcache = null;
public function __construct()
{
$this->memcache = new Memcache();
$this->memcache->addServer( '127.0.0.1', 11211 );
}
/**
* Read values for a set of keys from cache
*
* @param array $keys list of keys to fetch
* @return array list of values with the given keys used as indexes
* @return boolean true on success, false on failure
*/
protected function read(array $keys)
{
$_keys = $lookup = array();
foreach ($keys as $k) {
$_k = sha1($k);
$_keys[] = $_k;
$lookup[$_k] = $k;
}
$_res = array();
$res = $this->memcache->get($_keys);
foreach ($res as $k => $v) {
$_res[$lookup[$k]] = $v;
}
return $_res;
}
/**
* Save values for a set of keys to cache
*
* @param array $keys list of values to save
* @param int $expire expiration time
* @return boolean true on success, false on failure
*/
protected function write(array $keys, $expire=null)
{
foreach ($keys as $k => $v) {
$k = sha1($k);
$this->memcache->set($k, $v, 0, $expire);
}
return true;
}
/**
* Remove values from cache
*
* @param array $keys list of keys to delete
* @return boolean true on success, false on failure
*/
protected function delete(array $keys)
{
foreach ($keys as $k) {
$k = sha1($k);
$this->memcache->delete($k);
}
return true;
}
/**
* Remove *all* values from cache
*
* @return boolean true on success, false on failure
*/
protected function purge()
{
return $this->memcache->flush();
}
}

View File

@@ -0,0 +1,158 @@
<?php
/**
* MySQL CacheResource
*
* CacheResource Implementation based on the Custom API to use
* MySQL as the storage resource for Smarty's output caching.
*
* Table definition:
* <pre>CREATE TABLE IF NOT EXISTS `output_cache` (
* `id` CHAR(40) NOT NULL COMMENT 'sha1 hash',
* `name` VARCHAR(250) NOT NULL,
* `cache_id` VARCHAR(250) NULL DEFAULT NULL,
* `compile_id` VARCHAR(250) NULL DEFAULT NULL,
* `modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
* `content` LONGTEXT NOT NULL,
* PRIMARY KEY (`id`),
* INDEX(`name`),
* INDEX(`cache_id`),
* INDEX(`compile_id`),
* INDEX(`modified`)
* ) ENGINE = InnoDB;</pre>
*
* @package CacheResource-examples
* @author Rodney Rehm
*/
class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom
{
// PDO instance
protected $db;
protected $fetch;
protected $fetchTimestamp;
protected $save;
public function __construct()
{
try {
$this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty");
} catch (PDOException $e) {
throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
}
$this->fetch = $this->db->prepare('SELECT modified, content FROM output_cache WHERE id = :id');
$this->fetchTimestamp = $this->db->prepare('SELECT modified FROM output_cache WHERE id = :id');
$this->save = $this->db->prepare('REPLACE INTO output_cache (id, name, cache_id, compile_id, content)
VALUES (:id, :name, :cache_id, :compile_id, :content)');
}
/**
* fetch cached content and its modification time from data source
*
* @param string $id unique cache content identifier
* @param string $name template name
* @param string $cache_id cache id
* @param string $compile_id compile id
* @param string $content cached content
* @param integer $mtime cache modification timestamp (epoch)
* @return void
*/
protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime)
{
$this->fetch->execute(array('id' => $id));
$row = $this->fetch->fetch();
$this->fetch->closeCursor();
if ($row) {
$content = $row['content'];
$mtime = strtotime($row['modified']);
} else {
$content = null;
$mtime = null;
}
}
/**
* Fetch cached content's modification timestamp from data source
*
* @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the complete cached content.
* @param string $id unique cache content identifier
* @param string $name template name
* @param string $cache_id cache id
* @param string $compile_id compile id
* @return integer|boolean timestamp (epoch) the template was modified, or false if not found
*/
protected function fetchTimestamp($id, $name, $cache_id, $compile_id)
{
$this->fetchTimestamp->execute(array('id' => $id));
$mtime = strtotime($this->fetchTimestamp->fetchColumn());
$this->fetchTimestamp->closeCursor();
return $mtime;
}
/**
* Save content to cache
*
* @param string $id unique cache content identifier
* @param string $name template name
* @param string $cache_id cache id
* @param string $compile_id compile id
* @param integer|null $exp_time seconds till expiration time in seconds or null
* @param string $content content to cache
* @return boolean success
*/
protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content)
{
$this->save->execute(array(
'id' => $id,
'name' => $name,
'cache_id' => $cache_id,
'compile_id' => $compile_id,
'content' => $content,
));
return !!$this->save->rowCount();
}
/**
* Delete content from cache
*
* @param string $name template name
* @param string $cache_id cache id
* @param string $compile_id compile id
* @param integer|null $exp_time seconds till expiration or null
* @return integer number of deleted caches
*/
protected function delete($name, $cache_id, $compile_id, $exp_time)
{
// delete the whole cache
if ($name === null && $cache_id === null && $compile_id === null && $exp_time === null) {
// returning the number of deleted caches would require a second query to count them
$query = $this->db->query('TRUNCATE TABLE output_cache');
return -1;
}
// build the filter
$where = array();
// equal test name
if ($name !== null) {
$where[] = 'name = ' . $this->db->quote($name);
}
// equal test compile_id
if ($compile_id !== null) {
$where[] = 'compile_id = ' . $this->db->quote($compile_id);
}
// range test expiration time
if ($exp_time !== null) {
$where[] = 'modified < DATE_SUB(NOW(), INTERVAL ' . intval($exp_time) . ' SECOND)';
}
// equal test cache_id and match sub-groups
if ($cache_id !== null) {
$where[] = '(cache_id = '. $this->db->quote($cache_id)
. ' OR cache_id LIKE '. $this->db->quote($cache_id .'|%') .')';
}
// run delete query
$query = $this->db->query('DELETE FROM output_cache WHERE ' . join(' AND ', $where));
return $query->rowCount();
}
}

View File

@@ -0,0 +1,58 @@
<?php
/**
* Extends All Resource
*
* Resource Implementation modifying the extends-Resource to walk
* through the template_dirs and inherit all templates of the same name
*
* @package Resource-examples
* @author Rodney Rehm
*/
class Smarty_Resource_Extendsall extends Smarty_Internal_Resource_Extends
{
/**
* populate Source Object with meta data from Resource
*
* @param Smarty_Template_Source $source source object
* @param Smarty_Internal_Template $_template template object
* @return void
*/
public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
{
$uid = '';
$sources = array();
$exists = true;
foreach ($_template->smarty->getTemplateDir() as $key => $directory) {
try {
$s = Smarty_Resource::source(null, $source->smarty, '[' . $key . ']' . $source->name );
if (!$s->exists) {
continue;
}
$sources[$s->uid] = $s;
$uid .= $s->filepath;
} catch (SmartyException $e) {}
}
if (!$sources) {
$source->exists = false;
$source->template = $_template;
return;
}
$sources = array_reverse($sources, true);
reset($sources);
$s = current($sources);
$source->components = $sources;
$source->filepath = $s->filepath;
$source->uid = sha1($uid);
$source->exists = $exists;
if ($_template && $_template->smarty->compile_check) {
$source->timestamp = $s->timestamp;
}
// need the template at getContent()
$source->template = $_template;
}
}

View File

@@ -0,0 +1,80 @@
<?php
/**
* MySQL Resource
*
* Resource Implementation based on the Custom API to use
* MySQL as the storage resource for Smarty's templates and configs.
*
* Table definition:
* <pre>CREATE TABLE IF NOT EXISTS `templates` (
* `name` varchar(100) NOT NULL,
* `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
* `source` text,
* PRIMARY KEY (`name`)
* ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
*
* Demo data:
* <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');</pre>
*
* @package Resource-examples
* @author Rodney Rehm
*/
class Smarty_Resource_Mysql extends Smarty_Resource_Custom
{
// PDO instance
protected $db;
// prepared fetch() statement
protected $fetch;
// prepared fetchTimestamp() statement
protected $mtime;
public function __construct()
{
try {
$this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty");
} catch (PDOException $e) {
throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
}
$this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
$this->mtime = $this->db->prepare('SELECT modified FROM templates WHERE name = :name');
}
/**
* Fetch a template and its modification time from database
*
* @param string $name template name
* @param string $source template source
* @param integer $mtime template modification timestamp (epoch)
* @return void
*/
protected function fetch($name, &$source, &$mtime)
{
$this->fetch->execute(array('name' => $name));
$row = $this->fetch->fetch();
$this->fetch->closeCursor();
if ($row) {
$source = $row['source'];
$mtime = strtotime($row['modified']);
} else {
$source = null;
$mtime = null;
}
}
/**
* Fetch a template's modification time from database
*
* @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the comple template source.
* @param string $name template name
* @return integer timestamp (epoch) the template was modified
*/
protected function fetchTimestamp($name)
{
$this->mtime->execute(array('name' => $name));
$mtime = $this->mtime->fetchColumn();
$this->mtime->closeCursor();
return strtotime($mtime);
}
}

View File

@@ -0,0 +1,64 @@
<?php
/**
* MySQL Resource
*
* Resource Implementation based on the Custom API to use
* MySQL as the storage resource for Smarty's templates and configs.
*
* Note that this MySQL implementation fetches the source and timestamps in
* a single database query, instead of two separate like resource.mysql.php does.
*
* Table definition:
* <pre>CREATE TABLE IF NOT EXISTS `templates` (
* `name` varchar(100) NOT NULL,
* `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
* `source` text,
* PRIMARY KEY (`name`)
* ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
*
* Demo data:
* <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');</pre>
*
* @package Resource-examples
* @author Rodney Rehm
*/
class Smarty_Resource_Mysqls extends Smarty_Resource_Custom
{
// PDO instance
protected $db;
// prepared fetch() statement
protected $fetch;
public function __construct()
{
try {
$this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty");
} catch (PDOException $e) {
throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
}
$this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
}
/**
* Fetch a template and its modification time from database
*
* @param string $name template name
* @param string $source template source
* @param integer $mtime template modification timestamp (epoch)
* @return void
*/
protected function fetch($name, &$source, &$mtime)
{
$this->fetch->execute(array('name' => $name));
$row = $this->fetch->fetch();
$this->fetch->closeCursor();
if ($row) {
$source = $row['source'];
$mtime = strtotime($row['modified']);
} else {
$source = null;
$mtime = null;
}
}
}

View File

@@ -0,0 +1,2 @@
</BODY>
</HTML>

View File

@@ -0,0 +1,5 @@
<HTML>
<HEAD>
<TITLE>{$title} - {$Name}</TITLE>
</HEAD>
<BODY bgcolor="#ffffff">

View File

@@ -0,0 +1,82 @@
{config_load file="test.conf" section="setup"}
{include file="header.tpl" title=foo}
<PRE>
{* bold and title are read from the config file *}
{if #bold#}<b>{/if}
{* capitalize the first letters of each word of the title *}
Title: {#title#|capitalize}
{if #bold#}</b>{/if}
The current date and time is {$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}
The value of global assigned variable $SCRIPT_NAME is {$SCRIPT_NAME}
Example of accessing server environment variable SERVER_NAME: {$smarty.server.SERVER_NAME}
The value of {ldelim}$Name{rdelim} is <b>{$Name}</b>
variable modifier example of {ldelim}$Name|upper{rdelim}
<b>{$Name|upper}</b>
An example of a section loop:
{section name=outer
loop=$FirstName}
{if $smarty.section.outer.index is odd by 2}
{$smarty.section.outer.rownum} . {$FirstName[outer]} {$LastName[outer]}
{else}
{$smarty.section.outer.rownum} * {$FirstName[outer]} {$LastName[outer]}
{/if}
{sectionelse}
none
{/section}
An example of section looped key values:
{section name=sec1 loop=$contacts}
phone: {$contacts[sec1].phone}<br>
fax: {$contacts[sec1].fax}<br>
cell: {$contacts[sec1].cell}<br>
{/section}
<p>
testing strip tags
{strip}
<table border=0>
<tr>
<td>
<A HREF="{$SCRIPT_NAME}">
<font color="red">This is a test </font>
</A>
</td>
</tr>
</table>
{/strip}
</PRE>
This is an example of the html_select_date function:
<form>
{html_select_date start_year=1998 end_year=2010}
</form>
This is an example of the html_select_time function:
<form>
{html_select_time use_24_hours=false}
</form>
This is an example of the html_options function:
<form>
<select name=states>
{html_options values=$option_values selected=$option_selected output=$option_output}
</select>
</form>
{include file="footer.tpl"}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,459 @@
<?php
/**
* Project: Smarty: the PHP compiling template engine
* File: SmartyBC.class.php
* SVN: $Id: $
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* For questions, help, comments, discussion, etc., please join the
* Smarty mailing list. Send a blank e-mail to
* smarty-discussion-subscribe@googlegroups.com
*
* @link http://www.smarty.net/
* @copyright 2008 New Digital Group, Inc.
* @author Monte Ohrt <monte at ohrt dot com>
* @author Uwe Tews
* @author Rodney Rehm
* @package Smarty
*/
/**
* @ignore
*/
require(dirname(__FILE__) . '/Smarty.class.php');
/**
* Smarty Backward Compatability Wrapper Class
*
* @package Smarty
*/
class SmartyBC extends Smarty
{
/**
* Smarty 2 BC
* @var string
*/
public $_version = self::SMARTY_VERSION;
/**
* Initialize new SmartyBC object
*
* @param array $options options to set during initialization, e.g. array( 'forceCompile' => false )
*/
public function __construct(array $options=array())
{
parent::__construct($options);
// register {php} tag
$this->registerPlugin('block', 'php', 'smarty_php_tag');
}
/**
* wrapper for assign_by_ref
*
* @param string $tpl_var the template variable name
* @param mixed &$value the referenced value to assign
*/
public function assign_by_ref($tpl_var, &$value)
{
$this->assignByRef($tpl_var, $value);
}
/**
* wrapper for append_by_ref
*
* @param string $tpl_var the template variable name
* @param mixed &$value the referenced value to append
* @param boolean $merge flag if array elements shall be merged
*/
public function append_by_ref($tpl_var, &$value, $merge = false)
{
$this->appendByRef($tpl_var, $value, $merge);
}
/**
* clear the given assigned template variable.
*
* @param string $tpl_var the template variable to clear
*/
public function clear_assign($tpl_var)
{
$this->clearAssign($tpl_var);
}
/**
* Registers custom function to be used in templates
*
* @param string $function the name of the template function
* @param string $function_impl the name of the PHP function to register
* @param bool $cacheable
* @param mixed $cache_attrs
*/
public function register_function($function, $function_impl, $cacheable=true, $cache_attrs=null)
{
$this->registerPlugin('function', $function, $function_impl, $cacheable, $cache_attrs);
}
/**
* Unregisters custom function
*
* @param string $function name of template function
*/
public function unregister_function($function)
{
$this->unregisterPlugin('function', $function);
}
/**
* Registers object to be used in templates
*
* @param string $object name of template object
* @param object $object_impl the referenced PHP object to register
* @param array $allowed list of allowed methods (empty = all)
* @param boolean $smarty_args smarty argument format, else traditional
* @param array $block_functs list of methods that are block format
*/
public function register_object($object, $object_impl, $allowed = array(), $smarty_args = true, $block_methods = array())
{
settype($allowed, 'array');
settype($smarty_args, 'boolean');
$this->registerObject($object, $object_impl, $allowed, $smarty_args, $block_methods);
}
/**
* Unregisters object
*
* @param string $object name of template object
*/
public function unregister_object($object)
{
$this->unregisterObject($object);
}
/**
* Registers block function to be used in templates
*
* @param string $block name of template block
* @param string $block_impl PHP function to register
* @param bool $cacheable
* @param mixed $cache_attrs
*/
public function register_block($block, $block_impl, $cacheable=true, $cache_attrs=null)
{
$this->registerPlugin('block', $block, $block_impl, $cacheable, $cache_attrs);
}
/**
* Unregisters block function
*
* @param string $block name of template function
*/
public function unregister_block($block)
{
$this->unregisterPlugin('block', $block);
}
/**
* Registers compiler function
*
* @param string $function name of template function
* @param string $function_impl name of PHP function to register
* @param bool $cacheable
*/
public function register_compiler_function($function, $function_impl, $cacheable=true)
{
$this->registerPlugin('compiler', $function, $function_impl, $cacheable);
}
/**
* Unregisters compiler function
*
* @param string $function name of template function
*/
public function unregister_compiler_function($function)
{
$this->unregisterPlugin('compiler', $function);
}
/**
* Registers modifier to be used in templates
*
* @param string $modifier name of template modifier
* @param string $modifier_impl name of PHP function to register
*/
public function register_modifier($modifier, $modifier_impl)
{
$this->registerPlugin('modifier', $modifier, $modifier_impl);
}
/**
* Unregisters modifier
*
* @param string $modifier name of template modifier
*/
public function unregister_modifier($modifier)
{
$this->unregisterPlugin('modifier', $modifier);
}
/**
* Registers a resource to fetch a template
*
* @param string $type name of resource
* @param array $functions array of functions to handle resource
*/
public function register_resource($type, $functions)
{
$this->registerResource($type, $functions);
}
/**
* Unregisters a resource
*
* @param string $type name of resource
*/
public function unregister_resource($type)
{
$this->unregisterResource($type);
}
/**
* Registers a prefilter function to apply
* to a template before compiling
*
* @param callable $function
*/
public function register_prefilter($function)
{
$this->registerFilter('pre', $function);
}
/**
* Unregisters a prefilter function
*
* @param callable $function
*/
public function unregister_prefilter($function)
{
$this->unregisterFilter('pre', $function);
}
/**
* Registers a postfilter function to apply
* to a compiled template after compilation
*
* @param callable $function
*/
public function register_postfilter($function)
{
$this->registerFilter('post', $function);
}
/**
* Unregisters a postfilter function
*
* @param callable $function
*/
public function unregister_postfilter($function)
{
$this->unregisterFilter('post', $function);
}
/**
* Registers an output filter function to apply
* to a template output
*
* @param callable $function
*/
public function register_outputfilter($function)
{
$this->registerFilter('output', $function);
}
/**
* Unregisters an outputfilter function
*
* @param callable $function
*/
public function unregister_outputfilter($function)
{
$this->unregisterFilter('output', $function);
}
/**
* load a filter of specified type and name
*
* @param string $type filter type
* @param string $name filter name
*/
public function load_filter($type, $name)
{
$this->loadFilter($type, $name);
}
/**
* clear cached content for the given template and cache id
*
* @param string $tpl_file name of template file
* @param string $cache_id name of cache_id
* @param string $compile_id name of compile_id
* @param string $exp_time expiration time
* @return boolean
*/
public function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null)
{
return $this->clearCache($tpl_file, $cache_id, $compile_id, $exp_time);
}
/**
* clear the entire contents of cache (all templates)
*
* @param string $exp_time expire time
* @return boolean
*/
public function clear_all_cache($exp_time = null)
{
return $this->clearCache(null, null, null, $exp_time);
}
/**
* test to see if valid cache exists for this template
*
* @param string $tpl_file name of template file
* @param string $cache_id
* @param string $compile_id
* @return boolean
*/
public function is_cached($tpl_file, $cache_id = null, $compile_id = null)
{
return $this->isCached($tpl_file, $cache_id, $compile_id);
}
/**
* clear all the assigned template variables.
*/
public function clear_all_assign()
{
$this->clearAllAssign();
}
/**
* clears compiled version of specified template resource,
* or all compiled template files if one is not specified.
* This function is for advanced use only, not normally needed.
*
* @param string $tpl_file
* @param string $compile_id
* @param string $exp_time
* @return boolean results of {@link smarty_core_rm_auto()}
*/
public function clear_compiled_tpl($tpl_file = null, $compile_id = null, $exp_time = null)
{
return $this->clearCompiledTemplate($tpl_file, $compile_id, $exp_time);
}
/**
* Checks whether requested template exists.
*
* @param string $tpl_file
* @return boolean
*/
public function template_exists($tpl_file)
{
return $this->templateExists($tpl_file);
}
/**
* Returns an array containing template variables
*
* @param string $name
* @return array
*/
public function get_template_vars($name=null)
{
return $this->getTemplateVars($name);
}
/**
* Returns an array containing config variables
*
* @param string $name
* @return array
*/
public function get_config_vars($name=null)
{
return $this->getConfigVars($name);
}
/**
* load configuration values
*
* @param string $file
* @param string $section
* @param string $scope
*/
public function config_load($file, $section = null, $scope = 'global')
{
$this->ConfigLoad($file, $section, $scope);
}
/**
* return a reference to a registered object
*
* @param string $name
* @return object
*/
public function get_registered_object($name)
{
return $this->getRegisteredObject($name);
}
/**
* clear configuration values
*
* @param string $var
*/
public function clear_config($var = null)
{
$this->clearConfig($var);
}
/**
* trigger Smarty error
*
* @param string $error_msg
* @param integer $error_type
*/
public function trigger_error($error_msg, $error_type = E_USER_WARNING)
{
trigger_error("Smarty error: $error_msg", $error_type);
}
}
/**
* Smarty {php}{/php} block function
*
* @param array $params parameter list
* @param string $content contents of the block
* @param object $template template object
* @param boolean &$repeat repeat flag
* @return string content re-formatted
*/
function smarty_php_tag($params, $content, $template, &$repeat)
{
eval($content);
return '';
}

133
install/vendor/smarty/libs/debug.tpl vendored Normal file
View File

@@ -0,0 +1,133 @@
{capture name='_smarty_debug' assign=debug_output}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Smarty Debug Console</title>
<style type="text/css">
{literal}
body, h1, h2, td, th, p {
font-family: sans-serif;
font-weight: normal;
font-size: 0.9em;
margin: 1px;
padding: 0;
}
h1 {
margin: 0;
text-align: left;
padding: 2px;
background-color: #f0c040;
color: black;
font-weight: bold;
font-size: 1.2em;
}
h2 {
background-color: #9B410E;
color: white;
text-align: left;
font-weight: bold;
padding: 2px;
border-top: 1px solid black;
}
body {
background: black;
}
p, table, div {
background: #f0ead8;
}
p {
margin: 0;
font-style: italic;
text-align: center;
}
table {
width: 100%;
}
th, td {
font-family: monospace;
vertical-align: top;
text-align: left;
width: 50%;
}
td {
color: green;
}
.odd {
background-color: #eeeeee;
}
.even {
background-color: #fafafa;
}
.exectime {
font-size: 0.8em;
font-style: italic;
}
#table_assigned_vars th {
color: blue;
}
#table_config_vars th {
color: maroon;
}
{/literal}
</style>
</head>
<body>
<h1>Smarty Debug Console - {if isset($template_name)}{$template_name|debug_print_var nofilter}{else}Total Time {$execution_time|string_format:"%.5f"}{/if}</h1>
{if !empty($template_data)}
<h2>included templates &amp; config files (load time in seconds)</h2>
<div>
{foreach $template_data as $template}
<font color=brown>{$template.name}</font>
<span class="exectime">
(compile {$template['compile_time']|string_format:"%.5f"}) (render {$template['render_time']|string_format:"%.5f"}) (cache {$template['cache_time']|string_format:"%.5f"})
</span>
<br>
{/foreach}
</div>
{/if}
<h2>assigned template variables</h2>
<table id="table_assigned_vars">
{foreach $assigned_vars as $vars}
<tr class="{if $vars@iteration % 2 eq 0}odd{else}even{/if}">
<th>${$vars@key|escape:'html'}</th>
<td>{$vars|debug_print_var nofilter}</td></tr>
{/foreach}
</table>
<h2>assigned config file variables (outer template scope)</h2>
<table id="table_config_vars">
{foreach $config_vars as $vars}
<tr class="{if $vars@iteration % 2 eq 0}odd{else}even{/if}">
<th>{$vars@key|escape:'html'}</th>
<td>{$vars|debug_print_var nofilter}</td></tr>
{/foreach}
</table>
</body>
</html>
{/capture}
<script type="text/javascript">
{$id = $template_name|default:''|md5}
_smarty_console = window.open("","console{$id}","width=680,height=600,resizable,scrollbars=yes");
_smarty_console.document.write("{$debug_output|escape:'javascript' nofilter}");
_smarty_console.document.close();
</script>

View File

@@ -0,0 +1,110 @@
<?php
/**
* Smarty plugin to format text blocks
*
* @package Smarty
* @subpackage PluginsBlock
*/
/**
* Smarty {textformat}{/textformat} block plugin
*
* Type: block function<br>
* Name: textformat<br>
* Purpose: format text a certain way with preset styles
* or custom wrap/indent settings<br>
* Params:
* <pre>
* - style - string (email)
* - indent - integer (0)
* - wrap - integer (80)
* - wrap_char - string ("\n")
* - indent_char - string (" ")
* - wrap_boundary - boolean (true)
* </pre>
*
* @link http://www.smarty.net/manual/en/language.function.textformat.php {textformat}
* (Smarty online manual)
* @param array $params parameters
* @param string $content contents of the block
* @param Smarty_Internal_Template $template template object
* @param boolean &$repeat repeat flag
* @return string content re-formatted
* @author Monte Ohrt <monte at ohrt dot com>
*/
function smarty_block_textformat($params, $content, $template, &$repeat)
{
if (is_null($content)) {
return;
}
$style = null;
$indent = 0;
$indent_first = 0;
$indent_char = ' ';
$wrap = 80;
$wrap_char = "\n";
$wrap_cut = false;
$assign = null;
foreach ($params as $_key => $_val) {
switch ($_key) {
case 'style':
case 'indent_char':
case 'wrap_char':
case 'assign':
$$_key = (string) $_val;
break;
case 'indent':
case 'indent_first':
case 'wrap':
$$_key = (int) $_val;
break;
case 'wrap_cut':
$$_key = (bool) $_val;
break;
default:
trigger_error("textformat: unknown attribute '$_key'");
}
}
if ($style == 'email') {
$wrap = 72;
}
// split into paragraphs
$_paragraphs = preg_split('![\r\n]{2}!', $content);
$_output = '';
foreach ($_paragraphs as &$_paragraph) {
if (!$_paragraph) {
continue;
}
// convert mult. spaces & special chars to single space
$_paragraph = preg_replace(array('!\s+!' . Smarty::$_UTF8_MODIFIER, '!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER), array(' ', ''), $_paragraph);
// indent first line
if ($indent_first > 0) {
$_paragraph = str_repeat($indent_char, $indent_first) . $_paragraph;
}
// wordwrap sentences
if (Smarty::$_MBSTRING) {
require_once(SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php');
$_paragraph = smarty_mb_wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
} else {
$_paragraph = wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
}
// indent lines
if ($indent > 0) {
$_paragraph = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraph);
}
}
$_output = implode($wrap_char . $wrap_char, $_paragraphs);
if ($assign) {
$template->assign($assign, $_output);
} else {
return $_output;
}
}

View File

@@ -0,0 +1,76 @@
<?php
/**
* Smarty plugin
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {counter} function plugin
*
* Type: function<br>
* Name: counter<br>
* Purpose: print out a counter value
*
* @author Monte Ohrt <monte at ohrt dot com>
* @link http://www.smarty.net/manual/en/language.function.counter.php {counter}
* (Smarty online manual)
* @param array $params parameters
* @param Smarty_Internal_Template $template template object
* @return string|null
*/
function smarty_function_counter($params, $template)
{
static $counters = array();
$name = (isset($params['name'])) ? $params['name'] : 'default';
if (!isset($counters[$name])) {
$counters[$name] = array(
'start'=>1,
'skip'=>1,
'direction'=>'up',
'count'=>1
);
}
$counter =& $counters[$name];
if (isset($params['start'])) {
$counter['start'] = $counter['count'] = (int) $params['start'];
}
if (!empty($params['assign'])) {
$counter['assign'] = $params['assign'];
}
if (isset($counter['assign'])) {
$template->assign($counter['assign'], $counter['count']);
}
if (isset($params['print'])) {
$print = (bool) $params['print'];
} else {
$print = empty($counter['assign']);
}
if ($print) {
$retval = $counter['count'];
} else {
$retval = null;
}
if (isset($params['skip'])) {
$counter['skip'] = $params['skip'];
}
if (isset($params['direction'])) {
$counter['direction'] = $params['direction'];
}
if ($counter['direction'] == "down")
$counter['count'] -= $counter['skip'];
else
$counter['count'] += $counter['skip'];
return $retval;
}

View File

@@ -0,0 +1,105 @@
<?php
/**
* Smarty plugin
*
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {cycle} function plugin
*
* Type: function<br>
* Name: cycle<br>
* Date: May 3, 2002<br>
* Purpose: cycle through given values<br>
* Params:
* <pre>
* - name - name of cycle (optional)
* - values - comma separated list of values to cycle, or an array of values to cycle
* (this can be left out for subsequent calls)
* - reset - boolean - resets given var to true
* - print - boolean - print var or not. default is true
* - advance - boolean - whether or not to advance the cycle
* - delimiter - the value delimiter, default is ","
* - assign - boolean, assigns to template var instead of printed.
* </pre>
* Examples:<br>
* <pre>
* {cycle values="#eeeeee,#d0d0d0d"}
* {cycle name=row values="one,two,three" reset=true}
* {cycle name=row}
* </pre>
*
* @link http://www.smarty.net/manual/en/language.function.cycle.php {cycle}
* (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com>
* @author credit to Mark Priatel <mpriatel@rogers.com>
* @author credit to Gerard <gerard@interfold.com>
* @author credit to Jason Sweat <jsweat_php@yahoo.com>
* @version 1.3
* @param array $params parameters
* @param Smarty_Internal_Template $template template object
* @return string|null
*/
function smarty_function_cycle($params, $template)
{
static $cycle_vars;
$name = (empty($params['name'])) ? 'default' : $params['name'];
$print = (isset($params['print'])) ? (bool) $params['print'] : true;
$advance = (isset($params['advance'])) ? (bool) $params['advance'] : true;
$reset = (isset($params['reset'])) ? (bool) $params['reset'] : false;
if (!isset($params['values'])) {
if (!isset($cycle_vars[$name]['values'])) {
trigger_error("cycle: missing 'values' parameter");
return;
}
} else {
if(isset($cycle_vars[$name]['values'])
&& $cycle_vars[$name]['values'] != $params['values'] ) {
$cycle_vars[$name]['index'] = 0;
}
$cycle_vars[$name]['values'] = $params['values'];
}
if (isset($params['delimiter'])) {
$cycle_vars[$name]['delimiter'] = $params['delimiter'];
} elseif (!isset($cycle_vars[$name]['delimiter'])) {
$cycle_vars[$name]['delimiter'] = ',';
}
if (is_array($cycle_vars[$name]['values'])) {
$cycle_array = $cycle_vars[$name]['values'];
} else {
$cycle_array = explode($cycle_vars[$name]['delimiter'],$cycle_vars[$name]['values']);
}
if (!isset($cycle_vars[$name]['index']) || $reset ) {
$cycle_vars[$name]['index'] = 0;
}
if (isset($params['assign'])) {
$print = false;
$template->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]);
}
if ($print) {
$retval = $cycle_array[$cycle_vars[$name]['index']];
} else {
$retval = null;
}
if ($advance) {
if ( $cycle_vars[$name]['index'] >= count($cycle_array) -1 ) {
$cycle_vars[$name]['index'] = 0;
} else {
$cycle_vars[$name]['index']++;
}
}
return $retval;
}

View File

@@ -0,0 +1,219 @@
<?php
/**
* Smarty plugin
*
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {fetch} plugin
*
* Type: function<br>
* Name: fetch<br>
* Purpose: fetch file, web or ftp data and display results
*
* @link http://www.smarty.net/manual/en/language.function.fetch.php {fetch}
* (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com>
* @param array $params parameters
* @param Smarty_Internal_Template $template template object
* @return string|null if the assign parameter is passed, Smarty assigns the result to a template variable
*/
function smarty_function_fetch($params, $template)
{
if (empty($params['file'])) {
trigger_error("[plugin] fetch parameter 'file' cannot be empty",E_USER_NOTICE);
return;
}
// strip file protocol
if (stripos($params['file'], 'file://') === 0) {
$params['file'] = substr($params['file'], 7);
}
$protocol = strpos($params['file'], '://');
if ($protocol !== false) {
$protocol = strtolower(substr($params['file'], 0, $protocol));
}
if (isset($template->smarty->security_policy)) {
if ($protocol) {
// remote resource (or php stream, …)
if (!$template->smarty->security_policy->isTrustedUri($params['file'])) {
return;
}
} else {
// local file
if (!$template->smarty->security_policy->isTrustedResourceDir($params['file'])) {
return;
}
}
}
$content = '';
if ($protocol == 'http') {
// http fetch
if ($uri_parts = parse_url($params['file'])) {
// set defaults
$host = $server_name = $uri_parts['host'];
$timeout = 30;
$accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*";
$agent = "Smarty Template Engine ". Smarty::SMARTY_VERSION;
$referer = "";
$uri = !empty($uri_parts['path']) ? $uri_parts['path'] : '/';
$uri .= !empty($uri_parts['query']) ? '?' . $uri_parts['query'] : '';
$_is_proxy = false;
if (empty($uri_parts['port'])) {
$port = 80;
} else {
$port = $uri_parts['port'];
}
if (!empty($uri_parts['user'])) {
$user = $uri_parts['user'];
}
if (!empty($uri_parts['pass'])) {
$pass = $uri_parts['pass'];
}
// loop through parameters, setup headers
foreach ($params as $param_key => $param_value) {
switch ($param_key) {
case "file":
case "assign":
case "assign_headers":
break;
case "user":
if (!empty($param_value)) {
$user = $param_value;
}
break;
case "pass":
if (!empty($param_value)) {
$pass = $param_value;
}
break;
case "accept":
if (!empty($param_value)) {
$accept = $param_value;
}
break;
case "header":
if (!empty($param_value)) {
if (!preg_match('![\w\d-]+: .+!',$param_value)) {
trigger_error("[plugin] invalid header format '".$param_value."'",E_USER_NOTICE);
return;
} else {
$extra_headers[] = $param_value;
}
}
break;
case "proxy_host":
if (!empty($param_value)) {
$proxy_host = $param_value;
}
break;
case "proxy_port":
if (!preg_match('!\D!', $param_value)) {
$proxy_port = (int) $param_value;
} else {
trigger_error("[plugin] invalid value for attribute '".$param_key."'",E_USER_NOTICE);
return;
}
break;
case "agent":
if (!empty($param_value)) {
$agent = $param_value;
}
break;
case "referer":
if (!empty($param_value)) {
$referer = $param_value;
}
break;
case "timeout":
if (!preg_match('!\D!', $param_value)) {
$timeout = (int) $param_value;
} else {
trigger_error("[plugin] invalid value for attribute '".$param_key."'",E_USER_NOTICE);
return;
}
break;
default:
trigger_error("[plugin] unrecognized attribute '".$param_key."'",E_USER_NOTICE);
return;
}
}
if (!empty($proxy_host) && !empty($proxy_port)) {
$_is_proxy = true;
$fp = fsockopen($proxy_host,$proxy_port,$errno,$errstr,$timeout);
} else {
$fp = fsockopen($server_name,$port,$errno,$errstr,$timeout);
}
if (!$fp) {
trigger_error("[plugin] unable to fetch: $errstr ($errno)",E_USER_NOTICE);
return;
} else {
if ($_is_proxy) {
fputs($fp, 'GET ' . $params['file'] . " HTTP/1.0\r\n");
} else {
fputs($fp, "GET $uri HTTP/1.0\r\n");
}
if (!empty($host)) {
fputs($fp, "Host: $host\r\n");
}
if (!empty($accept)) {
fputs($fp, "Accept: $accept\r\n");
}
if (!empty($agent)) {
fputs($fp, "User-Agent: $agent\r\n");
}
if (!empty($referer)) {
fputs($fp, "Referer: $referer\r\n");
}
if (isset($extra_headers) && is_array($extra_headers)) {
foreach ($extra_headers as $curr_header) {
fputs($fp, $curr_header."\r\n");
}
}
if (!empty($user) && !empty($pass)) {
fputs($fp, "Authorization: BASIC ".base64_encode("$user:$pass")."\r\n");
}
fputs($fp, "\r\n");
while (!feof($fp)) {
$content .= fgets($fp,4096);
}
fclose($fp);
$csplit = preg_split("!\r\n\r\n!",$content,2);
$content = $csplit[1];
if (!empty($params['assign_headers'])) {
$template->assign($params['assign_headers'],preg_split("!\r\n!",$csplit[0]));
}
}
} else {
trigger_error("[plugin fetch] unable to parse URL, check syntax",E_USER_NOTICE);
return;
}
} else {
$content = @file_get_contents($params['file']);
if ($content === false) {
throw new SmartyException("{fetch} cannot read resource '" . $params['file'] ."'");
}
}
if (!empty($params['assign'])) {
$template->assign($params['assign'], $content);
} else {
return $content;
}
}

View File

@@ -0,0 +1,235 @@
<?php
/**
* Smarty plugin
*
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {html_checkboxes} function plugin
*
* File: function.html_checkboxes.php<br>
* Type: function<br>
* Name: html_checkboxes<br>
* Date: 24.Feb.2003<br>
* Purpose: Prints out a list of checkbox input types<br>
* Examples:
* <pre>
* {html_checkboxes values=$ids output=$names}
* {html_checkboxes values=$ids name='box' separator='<br>' output=$names}
* {html_checkboxes values=$ids checked=$checked separator='<br>' output=$names}
* </pre>
* Params:
* <pre>
* - name (optional) - string default "checkbox"
* - values (required) - array
* - options (optional) - associative array
* - checked (optional) - array default not set
* - separator (optional) - ie <br> or &nbsp;
* - output (optional) - the output next to each checkbox
* - assign (optional) - assign the output as an array to this variable
* - escape (optional) - escape the content (not value), defaults to true
* </pre>
*
* @link http://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes}
* (Smarty online manual)
* @author Christopher Kvarme <christopher.kvarme@flashjab.com>
* @author credits to Monte Ohrt <monte at ohrt dot com>
* @version 1.0
* @param array $params parameters
* @param object $template template object
* @return string
* @uses smarty_function_escape_special_chars()
*/
function smarty_function_html_checkboxes($params, $template)
{
require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
$name = 'checkbox';
$values = null;
$options = null;
$selected = array();
$separator = '';
$escape = true;
$labels = true;
$label_ids = false;
$output = null;
$extra = '';
foreach ($params as $_key => $_val) {
switch ($_key) {
case 'name':
case 'separator':
$$_key = (string) $_val;
break;
case 'escape':
case 'labels':
case 'label_ids':
$$_key = (bool) $_val;
break;
case 'options':
$$_key = (array) $_val;
break;
case 'values':
case 'output':
$$_key = array_values((array) $_val);
break;
case 'checked':
case 'selected':
if (is_array($_val)) {
$selected = array();
foreach ($_val as $_sel) {
if (is_object($_sel)) {
if (method_exists($_sel, "__toString")) {
$_sel = smarty_function_escape_special_chars((string) $_sel->__toString());
} else {
trigger_error("html_checkboxes: selected attribute contains an object of class '". get_class($_sel) ."' without __toString() method", E_USER_NOTICE);
continue;
}
} else {
$_sel = smarty_function_escape_special_chars((string) $_sel);
}
$selected[$_sel] = true;
}
} elseif (is_object($_val)) {
if (method_exists($_val, "__toString")) {
$selected = smarty_function_escape_special_chars((string) $_val->__toString());
} else {
trigger_error("html_checkboxes: selected attribute is an object of class '". get_class($_val) ."' without __toString() method", E_USER_NOTICE);
}
} else {
$selected = smarty_function_escape_special_chars((string) $_val);
}
break;
case 'checkboxes':
trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', E_USER_WARNING);
$options = (array) $_val;
break;
case 'assign':
break;
case 'strict': break;
case 'disabled':
case 'readonly':
if (!empty($params['strict'])) {
if (!is_scalar($_val)) {
trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE);
}
if ($_val === true || $_val === $_key) {
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
}
break;
}
// omit break; to fall through!
default:
if (!is_array($_val)) {
$extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
} else {
trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
}
break;
}
}
if (!isset($options) && !isset($values))
return ''; /* raise error here? */
$_html_result = array();
if (isset($options)) {
foreach ($options as $_key=>$_val) {
$_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
}
} else {
foreach ($values as $_i=>$_key) {
$_val = isset($output[$_i]) ? $output[$_i] : '';
$_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
}
}
if (!empty($params['assign'])) {
$template->assign($params['assign'], $_html_result);
} else {
return implode("\n", $_html_result);
}
}
function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape=true)
{
$_output = '';
if (is_object($value)) {
if (method_exists($value, "__toString")) {
$value = (string) $value->__toString();
} else {
trigger_error("html_options: value is an object of class '". get_class($value) ."' without __toString() method", E_USER_NOTICE);
return '';
}
} else {
$value = (string) $value;
}
if (is_object($output)) {
if (method_exists($output, "__toString")) {
$output = (string) $output->__toString();
} else {
trigger_error("html_options: output is an object of class '". get_class($output) ."' without __toString() method", E_USER_NOTICE);
return '';
}
} else {
$output = (string) $output;
}
if ($labels) {
if ($label_ids) {
$_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_', $name . '_' . $value));
$_output .= '<label for="' . $_id . '">';
} else {
$_output .= '<label>';
}
}
$name = smarty_function_escape_special_chars($name);
$value = smarty_function_escape_special_chars($value);
if ($escape) {
$output = smarty_function_escape_special_chars($output);
}
$_output .= '<input type="checkbox" name="' . $name . '[]" value="' . $value . '"';
if ($labels && $label_ids) {
$_output .= ' id="' . $_id . '"';
}
if (is_array($selected)) {
if (isset($selected[$value])) {
$_output .= ' checked="checked"';
}
} elseif ($value === $selected) {
$_output .= ' checked="checked"';
}
$_output .= $extra . ' />' . $output;
if ($labels) {
$_output .= '</label>';
}
$_output .= $separator;
return $_output;
}

View File

@@ -0,0 +1,161 @@
<?php
/**
* Smarty plugin
*
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {html_image} function plugin
*
* Type: function<br>
* Name: html_image<br>
* Date: Feb 24, 2003<br>
* Purpose: format HTML tags for the image<br>
* Examples: {html_image file="/images/masthead.gif"}<br>
* Output: <img src="/images/masthead.gif" width=400 height=23><br>
* Params:
* <pre>
* - file - (required) - file (and path) of image
* - height - (optional) - image height (default actual height)
* - width - (optional) - image width (default actual width)
* - basedir - (optional) - base directory for absolute paths, default is environment variable DOCUMENT_ROOT
* - path_prefix - prefix for path output (optional, default empty)
* </pre>
*
* @link http://www.smarty.net/manual/en/language.function.html.image.php {html_image}
* (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com>
* @author credits to Duda <duda@big.hu>
* @version 1.0
* @param array $params parameters
* @param Smarty_Internal_Template $template template object
* @return string
* @uses smarty_function_escape_special_chars()
*/
function smarty_function_html_image($params, $template)
{
require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
$alt = '';
$file = '';
$height = '';
$width = '';
$extra = '';
$prefix = '';
$suffix = '';
$path_prefix = '';
$basedir = isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : '';
foreach ($params as $_key => $_val) {
switch ($_key) {
case 'file':
case 'height':
case 'width':
case 'dpi':
case 'path_prefix':
case 'basedir':
$$_key = $_val;
break;
case 'alt':
if (!is_array($_val)) {
$$_key = smarty_function_escape_special_chars($_val);
} else {
throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
}
break;
case 'link':
case 'href':
$prefix = '<a href="' . $_val . '">';
$suffix = '</a>';
break;
default:
if (!is_array($_val)) {
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
} else {
throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
}
break;
}
}
if (empty($file)) {
trigger_error("html_image: missing 'file' parameter", E_USER_NOTICE);
return;
}
if ($file[0] == '/') {
$_image_path = $basedir . $file;
} else {
$_image_path = $file;
}
// strip file protocol
if (stripos($params['file'], 'file://') === 0) {
$params['file'] = substr($params['file'], 7);
}
$protocol = strpos($params['file'], '://');
if ($protocol !== false) {
$protocol = strtolower(substr($params['file'], 0, $protocol));
}
if (isset($template->smarty->security_policy)) {
if ($protocol) {
// remote resource (or php stream, …)
if (!$template->smarty->security_policy->isTrustedUri($params['file'])) {
return;
}
} else {
// local file
if (!$template->smarty->security_policy->isTrustedResourceDir($params['file'])) {
return;
}
}
}
if (!isset($params['width']) || !isset($params['height'])) {
// FIXME: (rodneyrehm) getimagesize() loads the complete file off a remote resource, use custom [jpg,png,gif]header reader!
if (!$_image_data = @getimagesize($_image_path)) {
if (!file_exists($_image_path)) {
trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE);
return;
} elseif (!is_readable($_image_path)) {
trigger_error("html_image: unable to read '$_image_path'", E_USER_NOTICE);
return;
} else {
trigger_error("html_image: '$_image_path' is not a valid image file", E_USER_NOTICE);
return;
}
}
if (!isset($params['width'])) {
$width = $_image_data[0];
}
if (!isset($params['height'])) {
$height = $_image_data[1];
}
}
if (isset($params['dpi'])) {
if (strstr($_SERVER['HTTP_USER_AGENT'], 'Mac')) {
// FIXME: (rodneyrehm) wrong dpi assumption
// don't know who thought this up… even if it was true in 1998, it's definitely wrong in 2011.
$dpi_default = 72;
} else {
$dpi_default = 96;
}
$_resize = $dpi_default / $params['dpi'];
$width = round($width * $_resize);
$height = round($height * $_resize);
}
return $prefix . '<img src="' . $path_prefix . $file . '" alt="' . $alt . '" width="' . $width . '" height="' . $height . '"' . $extra . ' />' . $suffix;
}

View File

@@ -0,0 +1,195 @@
<?php
/**
* Smarty plugin
*
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {html_options} function plugin
*
* Type: function<br>
* Name: html_options<br>
* Purpose: Prints the list of <option> tags generated from
* the passed parameters<br>
* Params:
* <pre>
* - name (optional) - string default "select"
* - values (required) - if no options supplied) - array
* - options (required) - if no values supplied) - associative array
* - selected (optional) - string default not set
* - output (required) - if not options supplied) - array
* - id (optional) - string default not set
* - class (optional) - string default not set
* </pre>
*
* @link http://www.smarty.net/manual/en/language.function.html.options.php {html_image}
* (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com>
* @author Ralf Strehle (minor optimization) <ralf dot strehle at yahoo dot de>
* @param array $params parameters
* @param Smarty_Internal_Template $template template object
* @return string
* @uses smarty_function_escape_special_chars()
*/
function smarty_function_html_options($params, $template)
{
require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
$name = null;
$values = null;
$options = null;
$selected = null;
$output = null;
$id = null;
$class = null;
$extra = '';
foreach ($params as $_key => $_val) {
switch ($_key) {
case 'name':
case 'class':
case 'id':
$$_key = (string) $_val;
break;
case 'options':
$options = (array) $_val;
break;
case 'values':
case 'output':
$$_key = array_values((array) $_val);
break;
case 'selected':
if (is_array($_val)) {
$selected = array();
foreach ($_val as $_sel) {
if (is_object($_sel)) {
if (method_exists($_sel, "__toString")) {
$_sel = smarty_function_escape_special_chars((string) $_sel->__toString());
} else {
trigger_error("html_options: selected attribute contains an object of class '". get_class($_sel) ."' without __toString() method", E_USER_NOTICE);
continue;
}
} else {
$_sel = smarty_function_escape_special_chars((string) $_sel);
}
$selected[$_sel] = true;
}
} elseif (is_object($_val)) {
if (method_exists($_val, "__toString")) {
$selected = smarty_function_escape_special_chars((string) $_val->__toString());
} else {
trigger_error("html_options: selected attribute is an object of class '". get_class($_val) ."' without __toString() method", E_USER_NOTICE);
}
} else {
$selected = smarty_function_escape_special_chars((string) $_val);
}
break;
case 'strict': break;
case 'disabled':
case 'readonly':
if (!empty($params['strict'])) {
if (!is_scalar($_val)) {
trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE);
}
if ($_val === true || $_val === $_key) {
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
}
break;
}
// omit break; to fall through!
default:
if (!is_array($_val)) {
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
} else {
trigger_error("html_options: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
}
break;
}
}
if (!isset($options) && !isset($values)) {
/* raise error here? */
return '';
}
$_html_result = '';
$_idx = 0;
if (isset($options)) {
foreach ($options as $_key => $_val) {
$_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx);
}
} else {
foreach ($values as $_i => $_key) {
$_val = isset($output[$_i]) ? $output[$_i] : '';
$_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx);
}
}
if (!empty($name)) {
$_html_class = !empty($class) ? ' class="'.$class.'"' : '';
$_html_id = !empty($id) ? ' id="'.$id.'"' : '';
$_html_result = '<select name="' . $name . '"' . $_html_class . $_html_id . $extra . '>' . "\n" . $_html_result . '</select>' . "\n";
}
return $_html_result;
}
function smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, &$idx)
{
if (!is_array($value)) {
$_key = smarty_function_escape_special_chars($key);
$_html_result = '<option value="' . $_key . '"';
if (is_array($selected)) {
if (isset($selected[$_key])) {
$_html_result .= ' selected="selected"';
}
} elseif ($_key === $selected) {
$_html_result .= ' selected="selected"';
}
$_html_class = !empty($class) ? ' class="'.$class.' option"' : '';
$_html_id = !empty($id) ? ' id="'.$id.'-'.$idx.'"' : '';
if (is_object($value)) {
if (method_exists($value, "__toString")) {
$value = smarty_function_escape_special_chars((string) $value->__toString());
} else {
trigger_error("html_options: value is an object of class '". get_class($value) ."' without __toString() method", E_USER_NOTICE);
return '';
}
} else {
$value = smarty_function_escape_special_chars((string) $value);
}
$_html_result .= $_html_class . $_html_id . '>' . $value . '</option>' . "\n";
$idx++;
} else {
$_idx = 0;
$_html_result = smarty_function_html_options_optgroup($key, $value, $selected, !empty($id) ? ($id.'-'.$idx) : null, $class, $_idx);
$idx++;
}
return $_html_result;
}
function smarty_function_html_options_optgroup($key, $values, $selected, $id, $class, &$idx)
{
$optgroup_html = '<optgroup label="' . smarty_function_escape_special_chars($key) . '">' . "\n";
foreach ($values as $key => $value) {
$optgroup_html .= smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, $idx);
}
$optgroup_html .= "</optgroup>\n";
return $optgroup_html;
}

View File

@@ -0,0 +1,219 @@
<?php
/**
* Smarty plugin
*
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {html_radios} function plugin
*
* File: function.html_radios.php<br>
* Type: function<br>
* Name: html_radios<br>
* Date: 24.Feb.2003<br>
* Purpose: Prints out a list of radio input types<br>
* Params:
* <pre>
* - name (optional) - string default "radio"
* - values (required) - array
* - options (required) - associative array
* - checked (optional) - array default not set
* - separator (optional) - ie <br> or &nbsp;
* - output (optional) - the output next to each radio button
* - assign (optional) - assign the output as an array to this variable
* - escape (optional) - escape the content (not value), defaults to true
* </pre>
* Examples:
* <pre>
* {html_radios values=$ids output=$names}
* {html_radios values=$ids name='box' separator='<br>' output=$names}
* {html_radios values=$ids checked=$checked separator='<br>' output=$names}
* </pre>
*
* @link http://smarty.php.net/manual/en/language.function.html.radios.php {html_radios}
* (Smarty online manual)
* @author Christopher Kvarme <christopher.kvarme@flashjab.com>
* @author credits to Monte Ohrt <monte at ohrt dot com>
* @version 1.0
* @param array $params parameters
* @param Smarty_Internal_Template $template template object
* @return string
* @uses smarty_function_escape_special_chars()
*/
function smarty_function_html_radios($params, $template)
{
require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
$name = 'radio';
$values = null;
$options = null;
$selected = null;
$separator = '';
$escape = true;
$labels = true;
$label_ids = false;
$output = null;
$extra = '';
foreach ($params as $_key => $_val) {
switch ($_key) {
case 'name':
case 'separator':
$$_key = (string) $_val;
break;
case 'checked':
case 'selected':
if (is_array($_val)) {
trigger_error('html_radios: the "' . $_key . '" attribute cannot be an array', E_USER_WARNING);
} elseif (is_object($_val)) {
if (method_exists($_val, "__toString")) {
$selected = smarty_function_escape_special_chars((string) $_val->__toString());
} else {
trigger_error("html_radios: selected attribute is an object of class '". get_class($_val) ."' without __toString() method", E_USER_NOTICE);
}
} else {
$selected = (string) $_val;
}
break;
case 'escape':
case 'labels':
case 'label_ids':
$$_key = (bool) $_val;
break;
case 'options':
$$_key = (array) $_val;
break;
case 'values':
case 'output':
$$_key = array_values((array) $_val);
break;
case 'radios':
trigger_error('html_radios: the use of the "radios" attribute is deprecated, use "options" instead', E_USER_WARNING);
$options = (array) $_val;
break;
case 'assign':
break;
case 'strict': break;
case 'disabled':
case 'readonly':
if (!empty($params['strict'])) {
if (!is_scalar($_val)) {
trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE);
}
if ($_val === true || $_val === $_key) {
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
}
break;
}
// omit break; to fall through!
default:
if (!is_array($_val)) {
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
} else {
trigger_error("html_radios: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
}
break;
}
}
if (!isset($options) && !isset($values)) {
/* raise error here? */
return '';
}
$_html_result = array();
if (isset($options)) {
foreach ($options as $_key => $_val) {
$_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
}
} else {
foreach ($values as $_i => $_key) {
$_val = isset($output[$_i]) ? $output[$_i] : '';
$_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
}
}
if (!empty($params['assign'])) {
$template->assign($params['assign'], $_html_result);
} else {
return implode("\n", $_html_result);
}
}
function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape)
{
$_output = '';
if (is_object($value)) {
if (method_exists($value, "__toString")) {
$value = (string) $value->__toString();
} else {
trigger_error("html_options: value is an object of class '". get_class($value) ."' without __toString() method", E_USER_NOTICE);
return '';
}
} else {
$value = (string) $value;
}
if (is_object($output)) {
if (method_exists($output, "__toString")) {
$output = (string) $output->__toString();
} else {
trigger_error("html_options: output is an object of class '". get_class($output) ."' without __toString() method", E_USER_NOTICE);
return '';
}
} else {
$output = (string) $output;
}
if ($labels) {
if ($label_ids) {
$_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_', $name . '_' . $value));
$_output .= '<label for="' . $_id . '">';
} else {
$_output .= '<label>';
}
}
$name = smarty_function_escape_special_chars($name);
$value = smarty_function_escape_special_chars($value);
if ($escape) {
$output = smarty_function_escape_special_chars($output);
}
$_output .= '<input type="radio" name="' . $name . '" value="' . $value . '"';
if ($labels && $label_ids) {
$_output .= ' id="' . $_id . '"';
}
if ($value === $selected) {
$_output .= ' checked="checked"';
}
$_output .= $extra . ' />' . $output;
if ($labels) {
$_output .= '</label>';
}
$_output .= $separator;
return $_output;
}

View File

@@ -0,0 +1,393 @@
<?php
/**
* Smarty plugin
*
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* @ignore
*/
require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
/**
* @ignore
*/
require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
/**
* Smarty {html_select_date} plugin
*
* Type: function<br>
* Name: html_select_date<br>
* Purpose: Prints the dropdowns for date selection.
*
* ChangeLog:
* <pre>
* - 1.0 initial release
* - 1.1 added support for +/- N syntax for begin
* and end year values. (Monte)
* - 1.2 added support for yyyy-mm-dd syntax for
* time value. (Jan Rosier)
* - 1.3 added support for choosing format for
* month values (Gary Loescher)
* - 1.3.1 added support for choosing format for
* day values (Marcus Bointon)
* - 1.3.2 support negative timestamps, force year
* dropdown to include given date unless explicitly set (Monte)
* - 1.3.4 fix behaviour of 0000-00-00 00:00:00 dates to match that
* of 0000-00-00 dates (cybot, boots)
* - 2.0 complete rewrite for performance,
* added attributes month_names, *_id
* </pre>
*
* @link http://www.smarty.net/manual/en/language.function.html.select.date.php {html_select_date}
* (Smarty online manual)
* @version 2.0
* @author Andrei Zmievski
* @author Monte Ohrt <monte at ohrt dot com>
* @author Rodney Rehm
* @param array $params parameters
* @param Smarty_Internal_Template $template template object
* @return string
*/
function smarty_function_html_select_date($params, $template)
{
// generate timestamps used for month names only
static $_month_timestamps = null;
static $_current_year = null;
if ($_month_timestamps === null) {
$_current_year = date('Y');
$_month_timestamps = array();
for ($i = 1; $i <= 12; $i++) {
$_month_timestamps[$i] = mktime(0, 0, 0, $i, 1, 2000);
}
}
/* Default values. */
$prefix = "Date_";
$start_year = null;
$end_year = null;
$display_days = true;
$display_months = true;
$display_years = true;
$month_format = "%B";
/* Write months as numbers by default GL */
$month_value_format = "%m";
$day_format = "%02d";
/* Write day values using this format MB */
$day_value_format = "%d";
$year_as_text = false;
/* Display years in reverse order? Ie. 2000,1999,.... */
$reverse_years = false;
/* Should the select boxes be part of an array when returned from PHP?
e.g. setting it to "birthday", would create "birthday[Day]",
"birthday[Month]" & "birthday[Year]". Can be combined with prefix */
$field_array = null;
/* <select size>'s of the different <select> tags.
If not set, uses default dropdown. */
$day_size = null;
$month_size = null;
$year_size = null;
/* Unparsed attributes common to *ALL* the <select>/<input> tags.
An example might be in the template: all_extra ='class ="foo"'. */
$all_extra = null;
/* Separate attributes for the tags. */
$day_extra = null;
$month_extra = null;
$year_extra = null;
/* Order in which to display the fields.
"D" -> day, "M" -> month, "Y" -> year. */
$field_order = 'MDY';
/* String printed between the different fields. */
$field_separator = "\n";
$option_separator = "\n";
$time = null;
// $all_empty = null;
// $day_empty = null;
// $month_empty = null;
// $year_empty = null;
$extra_attrs = '';
$all_id = null;
$day_id = null;
$month_id = null;
$year_id = null;
foreach ($params as $_key => $_value) {
switch ($_key) {
case 'time':
if (!is_array($_value) && $_value !== null) {
$time = smarty_make_timestamp($_value);
}
break;
case 'month_names':
if (is_array($_value) && count($_value) == 12) {
$$_key = $_value;
} else {
trigger_error("html_select_date: month_names must be an array of 12 strings", E_USER_NOTICE);
}
break;
case 'prefix':
case 'field_array':
case 'start_year':
case 'end_year':
case 'day_format':
case 'day_value_format':
case 'month_format':
case 'month_value_format':
case 'day_size':
case 'month_size':
case 'year_size':
case 'all_extra':
case 'day_extra':
case 'month_extra':
case 'year_extra':
case 'field_order':
case 'field_separator':
case 'option_separator':
case 'all_empty':
case 'month_empty':
case 'day_empty':
case 'year_empty':
case 'all_id':
case 'month_id':
case 'day_id':
case 'year_id':
$$_key = (string) $_value;
break;
case 'display_days':
case 'display_months':
case 'display_years':
case 'year_as_text':
case 'reverse_years':
$$_key = (bool) $_value;
break;
default:
if (!is_array($_value)) {
$extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
} else {
trigger_error("html_select_date: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
}
break;
}
}
// Note: date() is faster than strftime()
// Note: explode(date()) is faster than date() date() date()
if (isset($params['time']) && is_array($params['time'])) {
if (isset($params['time'][$prefix . 'Year'])) {
// $_REQUEST[$field_array] given
foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) {
$_variableName = '_' . strtolower($_elementName);
$$_variableName = isset($params['time'][$prefix . $_elementName])
? $params['time'][$prefix . $_elementName]
: date($_elementKey);
}
$time = mktime(0, 0, 0, $_month, $_day, $_year);
} elseif (isset($params['time'][$field_array][$prefix . 'Year'])) {
// $_REQUEST given
foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) {
$_variableName = '_' . strtolower($_elementName);
$$_variableName = isset($params['time'][$field_array][$prefix . $_elementName])
? $params['time'][$field_array][$prefix . $_elementName]
: date($_elementKey);
}
$time = mktime(0, 0, 0, $_month, $_day, $_year);
} else {
// no date found, use NOW
list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d'));
}
} elseif ($time === null) {
if (array_key_exists('time', $params)) {
$_year = $_month = $_day = $time = null;
} else {
list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d'));
}
} else {
list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d', $time));
}
// make syntax "+N" or "-N" work with $start_year and $end_year
// Note preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match) is slower than trim+substr
foreach (array('start', 'end') as $key) {
$key .= '_year';
$t = $$key;
if ($t === null) {
$$key = (int) $_current_year;
} elseif ($t[0] == '+') {
$$key = (int) ($_current_year + trim(substr($t, 1)));
} elseif ($t[0] == '-') {
$$key = (int) ($_current_year - trim(substr($t, 1)));
} else {
$$key = (int) $$key;
}
}
// flip for ascending or descending
if (($start_year > $end_year && !$reverse_years) || ($start_year < $end_year && $reverse_years)) {
$t = $end_year;
$end_year = $start_year;
$start_year = $t;
}
// generate year <select> or <input>
if ($display_years) {
$_html_years = '';
$_extra = '';
$_name = $field_array ? ($field_array . '[' . $prefix . 'Year]') : ($prefix . 'Year');
if ($all_extra) {
$_extra .= ' ' . $all_extra;
}
if ($year_extra) {
$_extra .= ' ' . $year_extra;
}
if ($year_as_text) {
$_html_years = '<input type="text" name="' . $_name . '" value="' . $_year . '" size="4" maxlength="4"' . $_extra . $extra_attrs . ' />';
} else {
$_html_years = '<select name="' . $_name . '"';
if ($year_id !== null || $all_id !== null) {
$_html_years .= ' id="' . smarty_function_escape_special_chars(
$year_id !== null ? ( $year_id ? $year_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name )
) . '"';
}
if ($year_size) {
$_html_years .= ' size="' . $year_size . '"';
}
$_html_years .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($year_empty) || isset($all_empty)) {
$_html_years .= '<option value="">' . ( isset($year_empty) ? $year_empty : $all_empty ) . '</option>' . $option_separator;
}
$op = $start_year > $end_year ? -1 : 1;
for ($i=$start_year; $op > 0 ? $i <= $end_year : $i >= $end_year; $i += $op) {
$_html_years .= '<option value="' . $i . '"'
. ($_year == $i ? ' selected="selected"' : '')
. '>' . $i . '</option>' . $option_separator;
}
$_html_years .= '</select>';
}
}
// generate month <select> or <input>
if ($display_months) {
$_html_month = '';
$_extra = '';
$_name = $field_array ? ($field_array . '[' . $prefix . 'Month]') : ($prefix . 'Month');
if ($all_extra) {
$_extra .= ' ' . $all_extra;
}
if ($month_extra) {
$_extra .= ' ' . $month_extra;
}
$_html_months = '<select name="' . $_name . '"';
if ($month_id !== null || $all_id !== null) {
$_html_months .= ' id="' . smarty_function_escape_special_chars(
$month_id !== null ? ( $month_id ? $month_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name )
) . '"';
}
if ($month_size) {
$_html_months .= ' size="' . $month_size . '"';
}
$_html_months .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($month_empty) || isset($all_empty)) {
$_html_months .= '<option value="">' . ( isset($month_empty) ? $month_empty : $all_empty ) . '</option>' . $option_separator;
}
for ($i = 1; $i <= 12; $i++) {
$_val = sprintf('%02d', $i);
$_text = isset($month_names) ? smarty_function_escape_special_chars($month_names[$i]) : ($month_format == "%m" ? $_val : strftime($month_format, $_month_timestamps[$i]));
$_value = $month_value_format == "%m" ? $_val : strftime($month_value_format, $_month_timestamps[$i]);
$_html_months .= '<option value="' . $_value . '"'
. ($_val == $_month ? ' selected="selected"' : '')
. '>' . $_text . '</option>' . $option_separator;
}
$_html_months .= '</select>';
}
// generate day <select> or <input>
if ($display_days) {
$_html_day = '';
$_extra = '';
$_name = $field_array ? ($field_array . '[' . $prefix . 'Day]') : ($prefix . 'Day');
if ($all_extra) {
$_extra .= ' ' . $all_extra;
}
if ($day_extra) {
$_extra .= ' ' . $day_extra;
}
$_html_days = '<select name="' . $_name . '"';
if ($day_id !== null || $all_id !== null) {
$_html_days .= ' id="' . smarty_function_escape_special_chars(
$day_id !== null ? ( $day_id ? $day_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name )
) . '"';
}
if ($day_size) {
$_html_days .= ' size="' . $day_size . '"';
}
$_html_days .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($day_empty) || isset($all_empty)) {
$_html_days .= '<option value="">' . ( isset($day_empty) ? $day_empty : $all_empty ) . '</option>' . $option_separator;
}
for ($i = 1; $i <= 31; $i++) {
$_val = sprintf('%02d', $i);
$_text = $day_format == '%02d' ? $_val : sprintf($day_format, $i);
$_value = $day_value_format == '%02d' ? $_val : sprintf($day_value_format, $i);
$_html_days .= '<option value="' . $_value . '"'
. ($_val == $_day ? ' selected="selected"' : '')
. '>' . $_text . '</option>' . $option_separator;
}
$_html_days .= '</select>';
}
// order the fields for output
$_html = '';
for ($i=0; $i <= 2; $i++) {
switch ($field_order[$i]) {
case 'Y':
case 'y':
if (isset($_html_years)) {
if ($_html) {
$_html .= $field_separator;
}
$_html .= $_html_years;
}
break;
case 'm':
case 'M':
if (isset($_html_months)) {
if ($_html) {
$_html .= $field_separator;
}
$_html .= $_html_months;
}
break;
case 'd':
case 'D':
if (isset($_html_days)) {
if ($_html) {
$_html .= $field_separator;
}
$_html .= $_html_days;
}
break;
}
}
return $_html;
}

Some files were not shown because too many files have changed in this diff Show More