Merge branch '12300'

This commit is contained in:
Fred Tempez 2023-03-12 10:45:16 +01:00
commit 36d5723e4d
216 changed files with 4413 additions and 86478 deletions

View File

@ -1,12 +1,39 @@
# Changelog
## Version 12.3.01
### Améliorations :
- Prise en charge PHP 8.2
- "Minification" de la sortie HTML.
- Envoi d'eMail, PHPMailer :
- Mise à jour PHPMailer 6.7.1, support PHP 8 ;
- Personnalisation de l'adresse de l'expéditeur ;
- Prise en charge des langues de l'interface ;
- Correction d'un mauvais fonctionnement de la configuration d'un serveur SMTP personnalisée différent de celui de l'hôte.
- Amélioration de la prise en charge des mises à jour en ligne.
- Activation du bouton de mise à jour dans la barre d'administration lorsque le menu de configuration est ouvert est qu'une mise à jour en ligne est détectée.
- Gestion des langues :
- Le numéro de version d'une langue est le numéro de version de base de données
- A l'installation ou lors de l'accès à la fenêtre des langues, les dialogues sont actualisés.
- La fonction d'édition des langues de l'UI est neutralisée.
- Contrôle des prérequis, Zwii ne démarre pas si la version de PHP n'est pas conforme ou si un module PHP nécessaire n'est pas installé, si les fichiers de sécurité htaccess sont manquants.
### Corrections :
- Suppression des appels Google Analytics lors du chargement du gestionnaire de fichiers (RFM) dans TUI-image.
- Mauvais affichage du script ou du CSS déclarés dans une page.
- Choix de la langue dans TinyMCE et CodeMirror.
- Mauvaise application des fontes dans l'administration du thème.
- Corrige une mauvaise lecture du type de fonte éditée.
- Correction de petits bugs.
### Nouveautés :
- Remplacement du sélecteur de date Flatpickr par le sélecteur HTML 5 qui autorise les formats suivants : date, time, week, month, datetime-local.
- Paramétrage du délai de recherche automatique d'une mise à jour, tous les jours, deux jours, quatre jours, toutes les semaines, tous les mois.
## Version 12.2.04
- Référencement incorrect de la langue grecque dans la base centrale.
## Version 12.2.03
- Corrections de bugs consécutifs au changement de format de languages.json
## Version 12.2.02
## Version 12.2.02 (version non publiée)
### Corrections :
- Gestion des plugins (modules) :
- Corrige un bug dans l'acquisition des données du store.
@ -14,13 +41,13 @@
- Corrige un bug dans l'installation d'un module (dataDirectory).
- Langues étrangères (v4) : corrige l'absence de spécificateur %s dans les traductions occasionnant des plantages lorsqu'une langue étrangère est active.
## Version 12.2.01
## Version 12.2.01 (version non publiée)
### Correction :
- Bug majeur lors de l'installation d'une version fraiche, erreur lors de la création de la base de données des langues.
### Amélioration :
- Gestion des erreurs d'écritures à l'aide d'un contrôle des données écrites sur le disque. Cinq tentatives se terminent par un arrêt en cas d'impossibilité d'enregistrer les données.
## Version 12.2.00
## Version 12.2.00 (version non publiée)
### Nouveautés :
- Traduction des modules en anglais, grec, espagnol, italien et portugais.
### Amélioration :

View File

@ -1,4 +1,4 @@
# ZwiiCMS 12.2.04
# ZwiiCMS 12.3.01
Zwii est un CMS sans base de données (flat-file) qui permet de créer et gérer facilement un site web sans aucune connaissance en programmation.
@ -70,6 +70,7 @@ A l'occasion de l'installation d'une verion majeure, il est recommandé de réal
[R] site Contenu du site
[R] backup Sauvegardes automatiques
[R] i18N Langues de l'interface de Zwii
[R] data Répertoire des données
[R] fr Dossier localisé
[F] page.json Données des pages
@ -90,6 +91,7 @@ A l'occasion de l'installation d'une verion majeure, il est recommandé de réal
[F] custom.css Feuille de style de la personnalisation avancée
[F] fonts.json Descripteur des fontes personnalisées
[F] journal.log Journalisation des actions
[F] languages.json Configuration des langues de l'interface
[F] theme.css Thème du site
[F] theme.json Données du site
[F] user.json Données des utilisateurs

100
README.md
View File

@ -1,4 +1,4 @@
# ZwiiCMS 12.2.04
# ZwiiCMS 12.3.01
Zwii is a database-less (flat-file) CMS that allows you to easily create and manage a web site without any programming knowledge.
@ -50,59 +50,61 @@ When installing a major version, it is recommended to make a backup copy.
## General tree structure
*Legend: [R] Directory - [F] File
*Legend: [D] Directory - [FILE] File
````
text
[R] core Core of the system
[R] class Classes
[R] layout Layout
[R] module Core modules
[R] vendor External libraries
[F] core.js.php Javascript core
[F] core.php PHP core
[DIR] core Core of the system
[DIR] class Classes
[DIR] layout Layout
[DIR] module Core modules
[DIR] vendor External libraries
[FILE] core.js.php Javascript core
[FILE] core.php PHP core
[R] module Page modules
[R] blog Blog
[R] form Form manager
[R] gallery Gallery
[R] news News
[R] redirection Redirection
[DIR] module Page modules
[DIR] blog Blog
[DIR] form Form manager
[DIR] gallery Gallery
[DIR] news News
[DIR] redirection Redirection
[R] site Site content
[R] backup Automatic backups
[R] data Data directory
[R] en Localized folder
[F] page.json Page data
[F] module.json Page module data
[F] local.json Language-specific site data
[R] content Folder of page contents
[F] home.html Sample home page content
[R] fonts Folder containing the installed fonts
[F] fonts.html File containing the fonts calls to load on cdnFonts
[F] fonts.css File containing the style sheet linked to the local fonts
[F] fonts.woff Local font files (woff, etc..)
[R] modules Customization of modules or own data
[F] admin.css Theme of administration pages
[F] admin.json Theme data for administration pages
[F] blacklist.json Logging of login attempts with unknown accounts
[F] config.json Site configuration
[F] core.json Core configuration
[F] custom.css Advanced customization stylesheet
[F] fonts.json Custom font descriptor
[F] journal.log Action logging
[F] theme.css Site theme
[F] theme.json Site data
[F] user.json User data
[F] .backup Marker for file backup if present
[R] file File manager upload directory
[R] source Various resources
[R] thumb Image thumbnails
[R] tmp Temporary directory
[DIR] site Site content
[DIR] backup Automatic backups
[DIR] i18N Zwii Interface languages
[DIR] data Data directory
[DIR] en Localized folder
[FILE] page.json Page data
[FILE] module.json Page module data
[FILE] local.json Language-specific site data
[DIR] content Folder of page contents
[FILE] home.html Sample home page content
[DIR] fonts Folder containing the installed fonts
[FILE] fonts.html File containing the fonts calls to load on cdnFonts
[FILE] fonts.css File containing the style sheet linked to the local fonts
[FILE] fonts.woff Local font files (woff, etc..)
[DIR] modules Customization of modules or own data
[FILE] admin.css Theme of administration pages
[FILE] admin.json Theme data for administration pages
[FILE] blacklist.json Logging of login attempts with unknown accounts
[FILE] config.json Site configuration
[FILE] core.json Core configuration
[FILE] custom.css Advanced customization stylesheet
[FILE] fonts.json Custom font descriptor
[FILE] journal.log Action logging
[FILE] languages.json Interface database languages
[FILE] theme.css Site theme
[FILE] theme.json Site data
[FILE] user.json User data
[FILE] .backup Marker for file backup if present
[DIR] file File manager upload directory
[DIR] source Various resources
[DIR] thumb Image thumbnails
[DIR] tmp Temporary directory
[F] index.php ZwiiCMS initialization file
[F] robots.txt Filtering of directories accessible to search engine robots
[F] sitemap.xml Sitemap
[F] sitemap.xml.gz Compressed version
[FILE] index.php ZwiiCMS initialization file
[FILE] robots.txt Filtering of directories accessible to search engine robots
[FILE] sitemap.xml Sitemap
[FILE] sitemap.xml.gz Compressed version
The .htaccess files contribute to security by filtering access to sensitive directories.

View File

@ -42,6 +42,15 @@ class helper
}
*/
// La traduction existe déjà dans le core
/*
if (array_key_exists($text, core::$dialog) === false && !empty($text)) {
$dialogues = json_decode(file_get_contents('core/module/install/ressource/i18n/fr_FR.json' ), true);
$data = array_merge($dialogues,[$text => '']);
file_put_contents ('core/module/install/ressource/i18n/fr_FR.json', json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT), LOCK_EX);
}
*/
return (array_key_exists($text, core::$dialog) && !empty(core::$dialog[$text]) ? core::$dialog[$text] : $text);
}
@ -53,9 +62,7 @@ class helper
public static function dateUTF8($format, $date)
{
require_once 'core/class/strftime/php-8.1-strftime.class.php';
return mb_detect_encoding(\PHP81_BC\strftime($format, $date), 'UTF-8', true)
? \PHP81_BC\strftime($format, $date)
: utf8_encode(\PHP81_BC\strftime($format, $date));
return mb_convert_encoding(\PHP81_BC\strftime($format, $date), 'UTF-8', mb_list_encodings());
}
/**
@ -361,9 +368,9 @@ class helper
* Renvoie le numéro de version de Zwii est en ligne
* @return string
*/
public static function getOnlineVersion()
public static function getOnlineVersion($channel)
{
return (helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version'));
return (helper::getUrlContents(common::ZWII_UPDATE_URL . $channel . '/version'));
}
@ -371,9 +378,9 @@ class helper
* Check si une nouvelle version de Zwii est disponible
* @return bool
*/
public static function checkNewVersion()
public static function checkNewVersion($channel)
{
$version = helper::getOnlineVersion();
$version = helper::getOnlineVersion($channel);
if (!empty($version)) {
return ((version_compare(common::ZWII_VERSION, $version)) === -1);
} else {

View File

@ -52,7 +52,8 @@ class JsonDb extends \Prowebcraft\Dot
public function set($key, $value = null, $save = true)
{
parent::set($key, $value);
if ($save) $this->save();
if ($save)
$this->save();
return $this;
}
@ -68,7 +69,8 @@ class JsonDb extends \Prowebcraft\Dot
public function add($key, $value = null, $pop = false, $save = true)
{
parent::add($key, $value, $pop);
if ($save) $this->save();
if ($save)
$this->save();
return $this;
}
@ -82,7 +84,8 @@ class JsonDb extends \Prowebcraft\Dot
public function delete($key, $save = true)
{
parent::delete($key);
if ($save) $this->save();
if ($save)
$this->save();
return $this;
}
@ -98,7 +101,8 @@ class JsonDb extends \Prowebcraft\Dot
public function clear($key = null, $format = false, $save = true)
{
parent::clear($key, $format);
if ($save) $this->save();
if ($save)
$this->save();
return $this;
}
@ -108,19 +112,20 @@ class JsonDb extends \Prowebcraft\Dot
* @param bool $reload Reboot data?
* @return array|mixed|null
*/
protected function loadData($reload = false) {
protected function loadData($reload = false)
{
if ($this->data === null || $reload) {
$this->db = $this->config['dir'] . DIRECTORY_SEPARATOR . $this->config['name'];
if (!file_exists($this->db)) {
return null; // Rebuild database manage by CMS
} else {
if ($this->config['backup']) {
try {
//todo make backup of database
copy ($this->config['dir'] . DIRECTORY_SEPARATOR . $this->config['name'], $this->config['dir'] . DIRECTORY_SEPARATOR . $this->config['name'] . '.backup');
} catch (\Exception $e) {
try {
//todo make backup of database
copy($this->config['dir'] . DIRECTORY_SEPARATOR . $this->config['name'], $this->config['dir'] . DIRECTORY_SEPARATOR . $this->config['name'] . '.backup');
} catch (\Exception $e) {
}
}
}
}
$this->data = json_decode(file_get_contents($this->db), true);
@ -135,18 +140,20 @@ class JsonDb extends \Prowebcraft\Dot
/**
* Save database
*/
public function save() {
$lenght = strlen(json_encode($this->data));
$try = 0;
while ($try < 5) {
$written = file_put_contents($this->db, json_encode($this->data), JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|LOCK_EX); // Multi user get a locker
if ($written == $lenght) {
public function save()
{
$v = json_encode($this->data, JSON_UNESCAPED_UNICODE | LOCK_EX);
$l = strlen($v);
$t = 0;
while ($t < 5) {
$w = file_put_contents($this->db, $v); // Multi user get a locker
if ($w == $l) {
break;
}
$try++;
sleep(1);
}
if ($written !== $lenght) {
if ($w !== $l) {
exit('Erreur d\'écriture, les données n\'ont pas été sauvegardées');
}

1167
core/class/layout.class.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -350,8 +350,8 @@ class PHPMailer
public $Password = '';
/**
* SMTP auth type.
* Options are CRAM-MD5, LOGIN, PLAIN, XOAUTH2, attempted in that order if not specified.
* SMTP authentication type. Options are CRAM-MD5, LOGIN, PLAIN, XOAUTH2.
* If not specified, the first one from that list that the server supports will be selected.
*
* @var string
*/
@ -750,7 +750,7 @@ class PHPMailer
*
* @var string
*/
const VERSION = '6.6.0';
const VERSION = '6.7.1';
/**
* Error severity: message only, continue processing.
@ -858,7 +858,7 @@ class PHPMailer
private function mailPassthru($to, $subject, $body, $header, $params)
{
//Check overloading of mail function to avoid double-encoding
if (ini_get('mbstring.func_overload') & 1) {
if ((int)ini_get('mbstring.func_overload') & 1) {
$subject = $this->secureHeader($subject);
} else {
$subject = $this->encodeHeader($this->secureHeader($subject));
@ -1066,8 +1066,8 @@ class PHPMailer
* Addresses that have been added already return false, but do not throw exceptions.
*
* @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo'
* @param string $address The email address to send, resp. to reply to
* @param string $name
* @param string $address The email address
* @param string $name An optional username associated with the address
*
* @throws Exception
*
@ -1075,9 +1075,11 @@ class PHPMailer
*/
protected function addOrEnqueueAnAddress($kind, $address, $name)
{
$address = trim($address);
$name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
$pos = strrpos($address, '@');
$pos = false;
if ($address !== null) {
$address = trim($address);
$pos = strrpos($address, '@');
}
if (false === $pos) {
//At-sign is missing.
$error_message = sprintf(
@ -1094,8 +1096,14 @@ class PHPMailer
return false;
}
if ($name !== null && is_string($name)) {
$name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
} else {
$name = '';
}
$params = [$kind, $address, $name];
//Enqueue addresses with IDN until we know the PHPMailer::$CharSet.
//Domain is assumed to be whatever is after the last @ symbol in the address
if (static::idnSupported() && $this->has8bitChars(substr($address, ++$pos))) {
if ('Reply-To' !== $kind) {
if (!array_key_exists($address, $this->RecipientsQueue)) {
@ -1116,6 +1124,22 @@ class PHPMailer
return call_user_func_array([$this, 'addAnAddress'], $params);
}
/**
* Set the boundaries to use for delimiting MIME parts.
* If you override this, ensure you set all 3 boundaries to unique values.
* The default boundaries include a "=_" sequence which cannot occur in quoted-printable bodies,
* as suggested by https://www.rfc-editor.org/rfc/rfc2045#section-6.7
*
* @return void
*/
public function setBoundaries()
{
$this->uniqueid = $this->generateId();
$this->boundary[1] = 'b1=_' . $this->uniqueid;
$this->boundary[2] = 'b2=_' . $this->uniqueid;
$this->boundary[3] = 'b3=_' . $this->uniqueid;
}
/**
* Add an address to one of the recipient arrays or to the ReplyTo array.
* Addresses that have been added already return false, but do not throw exceptions.
@ -1280,7 +1304,7 @@ class PHPMailer
*/
public function setFrom($address, $name = '', $auto = true)
{
$address = trim($address);
$address = trim((string)$address);
$name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
//Don't validate now addresses with IDN. Will be done in send().
$pos = strrpos($address, '@');
@ -1547,17 +1571,17 @@ class PHPMailer
//Validate From, Sender, and ConfirmReadingTo addresses
foreach (['From', 'Sender', 'ConfirmReadingTo'] as $address_kind) {
$this->$address_kind = trim($this->$address_kind);
if (empty($this->$address_kind)) {
$this->{$address_kind} = trim($this->{$address_kind});
if (empty($this->{$address_kind})) {
continue;
}
$this->$address_kind = $this->punyencodeAddress($this->$address_kind);
if (!static::validateAddress($this->$address_kind)) {
$this->{$address_kind} = $this->punyencodeAddress($this->{$address_kind});
if (!static::validateAddress($this->{$address_kind})) {
$error_message = sprintf(
'%s (%s): %s',
$this->lang('invalid_address'),
$address_kind,
$this->$address_kind
$this->{$address_kind}
);
$this->setError($error_message);
$this->edebug($error_message);
@ -1657,17 +1681,17 @@ class PHPMailer
default:
$sendMethod = $this->Mailer . 'Send';
if (method_exists($this, $sendMethod)) {
return $this->$sendMethod($this->MIMEHeader, $this->MIMEBody);
return $this->{$sendMethod}($this->MIMEHeader, $this->MIMEBody);
}
return $this->mailSend($this->MIMEHeader, $this->MIMEBody);
}
} catch (Exception $exc) {
if ($this->Mailer === 'smtp' && $this->SMTPKeepAlive == true) {
$this->smtp->reset();
}
$this->setError($exc->getMessage());
$this->edebug($exc->getMessage());
if ($this->Mailer === 'smtp' && $this->SMTPKeepAlive == true && $this->smtp->connected()) {
$this->smtp->reset();
}
if ($this->exceptions) {
throw $exc;
}
@ -1855,7 +1879,7 @@ class PHPMailer
if (!static::isPermittedPath($path)) {
return false;
}
$readable = file_exists($path);
$readable = is_file($path);
//If not a UNC path (expected to start with \\), check read permission, see #2069
if (strpos($path, '\\\\') !== 0) {
$readable = $readable && is_readable($path);
@ -1883,7 +1907,14 @@ class PHPMailer
foreach ($this->to as $toaddr) {
$toArr[] = $this->addrFormat($toaddr);
}
$to = implode(', ', $toArr);
$to = trim(implode(', ', $toArr));
//If there are no To-addresses (e.g. when sending only to BCC-addresses)
//the following should be added to get a correct DKIM-signature.
//Compare with $this->preSend()
if ($to === '') {
$to = 'undisclosed-recipients:;';
}
$params = null;
//This sets the SMTP envelope sender which gets turned into a return-path header by the receiver
@ -2086,6 +2117,9 @@ class PHPMailer
$this->smtp->setDebugLevel($this->SMTPDebug);
$this->smtp->setDebugOutput($this->Debugoutput);
$this->smtp->setVerp($this->do_verp);
if ($this->Host === null) {
$this->Host = 'localhost';
}
$hosts = explode(';', $this->Host);
$lastexception = null;
@ -2192,7 +2226,8 @@ class PHPMailer
//As we've caught all exceptions, just report whatever the last one was
if ($this->exceptions && null !== $lastexception) {
throw $lastexception;
} elseif ($this->exceptions) {
}
if ($this->exceptions) {
// no exception was thrown, likely $this->smtp->connect() failed
$message = $this->getSmtpErrorMessage('connect_host');
throw new Exception($message);
@ -2775,10 +2810,7 @@ class PHPMailer
{
$body = '';
//Create unique IDs and preset boundaries
$this->uniqueid = $this->generateId();
$this->boundary[1] = 'b1_' . $this->uniqueid;
$this->boundary[2] = 'b2_' . $this->uniqueid;
$this->boundary[3] = 'b3_' . $this->uniqueid;
$this->setBoundaries();
if ($this->sign_key_file) {
$body .= $this->getMailMIME() . static::$LE;
@ -2814,7 +2846,7 @@ class PHPMailer
$altBodyEncoding = static::ENCODING_QUOTED_PRINTABLE;
}
//Use this as a preamble in all multipart message types
$mimepre = 'This is a multi-part message in MIME format.' . static::$LE . static::$LE;
$mimepre = '';
switch ($this->message_type) {
case 'inline':
$body .= $mimepre;
@ -3050,6 +3082,18 @@ class PHPMailer
return $body;
}
/**
* Get the boundaries that this message will use
* @return array
*/
public function getBoundaries()
{
if (empty($this->boundary)) {
$this->setBoundaries();
}
return $this->boundary;
}
/**
* Return the start of a message boundary.
*
@ -3705,20 +3749,21 @@ class PHPMailer
* These differ from 'regular' attachments in that they are intended to be
* displayed inline with the message, not just attached for download.
* This is used in HTML messages that embed the images
* the HTML refers to using the $cid value.
* the HTML refers to using the `$cid` value in `img` tags, for example `<img src="cid:mylogo">`.
* Never use a user-supplied path to a file!
*
* @param string $path Path to the attachment
* @param string $cid Content ID of the attachment; Use this to reference
* the content when using an embedded image in HTML
* @param string $name Overrides the attachment name
* @param string $encoding File encoding (see $Encoding)
* @param string $type File MIME type
* @param string $disposition Disposition to use
*
* @throws Exception
* @param string $name Overrides the attachment filename
* @param string $encoding File encoding (see $Encoding) defaults to `base64`
* @param string $type File MIME type (by default mapped from the `$path` filename's extension)
* @param string $disposition Disposition to use: `inline` (default) or `attachment`
* (unlikely you want this {@see `addAttachment()`} instead)
*
* @return bool True on successfully adding an attachment
* @throws Exception
*
*/
public function addEmbeddedImage(
$path,
@ -4096,12 +4141,8 @@ class PHPMailer
//Is it a valid IPv4 address?
return filter_var($host, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false;
}
if (filter_var('http://' . $host, FILTER_VALIDATE_URL) !== false) {
//Is it a syntactically valid hostname?
return true;
}
return false;
//Is it a syntactically valid hostname (when embeded in a URL)?
return filter_var('http://' . $host, FILTER_VALIDATE_URL) !== false;
}
/**
@ -4170,6 +4211,7 @@ class PHPMailer
* @param string $name Custom header name
* @param string|null $value Header value
*
* @return bool True if a header was set successfully
* @throws Exception
*/
public function addCustomHeader($name, $value = null)
@ -4464,6 +4506,7 @@ class PHPMailer
'ics' => 'text/calendar',
'xml' => 'text/xml',
'xsl' => 'text/xml',
'csv' => 'text/csv',
'wmv' => 'video/x-ms-wmv',
'mpeg' => 'video/mpeg',
'mpe' => 'video/mpeg',
@ -4571,7 +4614,7 @@ class PHPMailer
public function set($name, $value = '')
{
if (property_exists($this, $name)) {
$this->$name = $value;
$this->{$name} = $value;
return true;
}
@ -4618,15 +4661,27 @@ class PHPMailer
}
/**
* Remove trailing breaks from a string.
* Remove trailing whitespace from a string.
*
* @param string $text
*
* @return string The text to remove whitespace from
*/
public static function stripTrailingWSP($text)
{
return rtrim($text, " \r\n\t");
}
/**
* Strip trailing line breaks from a string.
*
* @param string $text
*
* @return string The text to remove breaks from
*/
public static function stripTrailingWSP($text)
public static function stripTrailingBreaks($text)
{
return rtrim($text, " \r\n\t");
return rtrim($text, "\r\n");
}
/**
@ -4792,7 +4847,7 @@ class PHPMailer
$body = static::normalizeBreaks($body, self::CRLF);
//Reduce multiple trailing line breaks to a single one
return static::stripTrailingWSP($body) . self::CRLF;
return static::stripTrailingBreaks($body) . self::CRLF;
}
/**

View File

@ -35,7 +35,7 @@ class SMTP
*
* @var string
*/
const VERSION = '6.6.0';
const VERSION = '6.7.1';
/**
* SMTP line break constant.
@ -682,7 +682,6 @@ class SMTP
*/
public function close()
{
$this->setError('');
$this->server_caps = null;
$this->helo_rply = null;
if (is_resource($this->smtp_conn)) {
@ -1037,7 +1036,10 @@ class SMTP
return false;
}
$this->setError('');
//Don't clear the error store when using keepalive
if ($command !== 'RSET') {
$this->setError('');
}
return true;
}

View File

@ -0,0 +1,28 @@
<?php
/**
* German PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP-Fehler: Authentifizierung fehlgeschlagen.';
$PHPMAILER_LANG['connect_host'] = 'SMTP-Fehler: Konnte keine Verbindung zum SMTP-Host herstellen.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP-Fehler: Daten werden nicht akzeptiert.';
$PHPMAILER_LANG['empty_message'] = 'E-Mail-Inhalt ist leer.';
$PHPMAILER_LANG['encoding'] = 'Unbekannte Kodierung: ';
$PHPMAILER_LANG['execute'] = 'Konnte folgenden Befehl nicht ausführen: ';
$PHPMAILER_LANG['file_access'] = 'Zugriff auf folgende Datei fehlgeschlagen: ';
$PHPMAILER_LANG['file_open'] = 'Dateifehler: Konnte folgende Datei nicht öffnen: ';
$PHPMAILER_LANG['from_failed'] = 'Die folgende Absenderadresse ist nicht korrekt: ';
$PHPMAILER_LANG['instantiate'] = 'Mail-Funktion konnte nicht initialisiert werden.';
$PHPMAILER_LANG['invalid_address'] = 'Die Adresse ist ungültig: ';
$PHPMAILER_LANG['invalid_hostentry'] = 'Ungültiger Hosteintrag: ';
$PHPMAILER_LANG['invalid_host'] = 'Ungültiger Host: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wird nicht unterstützt.';
$PHPMAILER_LANG['provide_address'] = 'Bitte geben Sie mindestens eine Empfängeradresse an.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP-Fehler: Die folgenden Empfänger sind nicht korrekt: ';
$PHPMAILER_LANG['signing'] = 'Fehler beim Signieren: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Verbindung zum SMTP-Server fehlgeschlagen.';
$PHPMAILER_LANG['smtp_error'] = 'Fehler vom SMTP-Server: ';
$PHPMAILER_LANG['variable_set'] = 'Kann Variable nicht setzen oder zurücksetzen: ';
$PHPMAILER_LANG['extension_missing'] = 'Fehlende Erweiterung: ';

View File

@ -0,0 +1,33 @@
<?php
/**
* Greek PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
*/
$PHPMAILER_LANG['authenticate'] = 'Σφάλμα SMTP: Αδυναμία πιστοποίησης.';
$PHPMAILER_LANG['buggy_php'] = 'Η έκδοση PHP που χρησιμοποιείτε παρουσιάζει σφάλμα που μπορεί να έχει ως αποτέλεσμα κατεστραμένα μηνύματα. Για να το διορθώσετε, αλλάξτε τον τρόπο αποστολής σε SMTP, απενεργοποιήστε την επιλογή mail.add_x_header στο αρχείο php.ini, αλλάξτε λειτουργικό σε MacOS ή Linux ή αναβαθμίστε την PHP σε έκδοση 7.0.17+ ή 7.1.3+.';
$PHPMAILER_LANG['connect_host'] = 'Σφάλμα SMTP: Αδυναμία σύνδεσης με τον φιλοξενητή SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'Σφάλμα SMTP: Μη αποδεκτά δεδομένα.';
$PHPMAILER_LANG['empty_message'] = 'Η ηλεκτρονική επιστολή δεν έχει περιεχόμενο.';
$PHPMAILER_LANG['encoding'] = 'Άγνωστη μορφή κωδικοποίησης: ';
$PHPMAILER_LANG['execute'] = 'Αδυναμία εκτέλεσης: ';
$PHPMAILER_LANG['extension_missing'] = 'Απουσία επέκτασης: ';
$PHPMAILER_LANG['file_access'] = 'Αδυναμία πρόσβασης στο αρχείο: ';
$PHPMAILER_LANG['file_open'] = 'Σφάλμα Αρχείου: Αδυναμία ανοίγματος αρχείου: ';
$PHPMAILER_LANG['from_failed'] = 'Η ακόλουθη διεύθυνση αποστολέα δεν είναι σωστή: ';
$PHPMAILER_LANG['instantiate'] = 'Αδυναμία εκκίνησης συνάρτησης Mail.';
$PHPMAILER_LANG['invalid_address'] = 'Μη έγκυρη διεύθυνση: ';
$PHPMAILER_LANG['invalid_header'] = 'Μη έγκυρο όνομα κεφαλίδας ή τιμή';
$PHPMAILER_LANG['invalid_hostentry'] = 'Μη έγκυρη εισαγωγή φιλοξενητή: ';
$PHPMAILER_LANG['invalid_host'] = 'Μη έγκυρος φιλοξενητής: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer δεν υποστηρίζεται.';
$PHPMAILER_LANG['provide_address'] = 'Δώστε τουλάχιστον μια ηλεκτρονική διεύθυνση παραλήπτη.';
$PHPMAILER_LANG['recipients_failed'] = 'Σφάλμα SMTP: Οι παρακάτω διευθύνσεις παραλήπτη δεν είναι έγκυρες: ';
$PHPMAILER_LANG['signing'] = 'Σφάλμα υπογραφής: ';
$PHPMAILER_LANG['smtp_code'] = 'Κώδικάς SMTP: ';
$PHPMAILER_LANG['smtp_code_ex'] = 'Πρόσθετες πληροφορίες SMTP: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Αποτυχία σύνδεσης SMTP.';
$PHPMAILER_LANG['smtp_detail'] = 'Λεπτομέρεια: ';
$PHPMAILER_LANG['smtp_error'] = 'Σφάλμα με τον διακομιστή SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'Αδυναμία ορισμού ή επαναφοράς μεταβλητής: ';

View File

@ -0,0 +1,31 @@
<?php
/**
* Spanish PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Matt Sturdy <matt.sturdy@gmail.com>
* @author Crystopher Glodzienski Cardoso <crystopher.glodzienski@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'Error SMTP: Imposible autentificar.';
$PHPMAILER_LANG['connect_host'] = 'Error SMTP: Imposible conectar al servidor SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'Error SMTP: Datos no aceptados.';
$PHPMAILER_LANG['empty_message'] = 'El cuerpo del mensaje está vacío.';
$PHPMAILER_LANG['encoding'] = 'Codificación desconocida: ';
$PHPMAILER_LANG['execute'] = 'Imposible ejecutar: ';
$PHPMAILER_LANG['file_access'] = 'Imposible acceder al archivo: ';
$PHPMAILER_LANG['file_open'] = 'Error de Archivo: Imposible abrir el archivo: ';
$PHPMAILER_LANG['from_failed'] = 'La(s) siguiente(s) direcciones de remitente fallaron: ';
$PHPMAILER_LANG['instantiate'] = 'Imposible crear una instancia de la función Mail.';
$PHPMAILER_LANG['invalid_address'] = 'Imposible enviar: dirección de email inválido: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer no está soportado.';
$PHPMAILER_LANG['provide_address'] = 'Debe proporcionar al menos una dirección de email de destino.';
$PHPMAILER_LANG['recipients_failed'] = 'Error SMTP: Los siguientes destinos fallaron: ';
$PHPMAILER_LANG['signing'] = 'Error al firmar: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falló.';
$PHPMAILER_LANG['smtp_error'] = 'Error del servidor SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'No se pudo configurar la variable: ';
$PHPMAILER_LANG['extension_missing'] = 'Extensión faltante: ';
$PHPMAILER_LANG['smtp_code'] = 'Código del servidor SMTP: ';
$PHPMAILER_LANG['smtp_code_ex'] = 'Información adicional del servidor SMTP: ';
$PHPMAILER_LANG['invalid_header'] = 'Nombre o valor de encabezado no válido';

View File

@ -0,0 +1,28 @@
<?php
/**
* Italian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Ilias Bartolini <brain79@inwind.it>
* @author Stefano Sabatini <sabas88@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Impossibile autenticarsi.';
$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Impossibile connettersi all\'host SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Dati non accettati dal server.';
$PHPMAILER_LANG['empty_message'] = 'Il corpo del messaggio è vuoto';
$PHPMAILER_LANG['encoding'] = 'Codifica dei caratteri sconosciuta: ';
$PHPMAILER_LANG['execute'] = 'Impossibile eseguire l\'operazione: ';
$PHPMAILER_LANG['file_access'] = 'Impossibile accedere al file: ';
$PHPMAILER_LANG['file_open'] = 'File Error: Impossibile aprire il file: ';
$PHPMAILER_LANG['from_failed'] = 'I seguenti indirizzi mittenti hanno generato errore: ';
$PHPMAILER_LANG['instantiate'] = 'Impossibile istanziare la funzione mail';
$PHPMAILER_LANG['invalid_address'] = 'Impossibile inviare, l\'indirizzo email non è valido: ';
$PHPMAILER_LANG['provide_address'] = 'Deve essere fornito almeno un indirizzo ricevente';
$PHPMAILER_LANG['mailer_not_supported'] = 'Mailer non supportato';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: I seguenti indirizzi destinatari hanno generato un errore: ';
$PHPMAILER_LANG['signing'] = 'Errore nella firma: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() fallita.';
$PHPMAILER_LANG['smtp_error'] = 'Errore del server SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'Impossibile impostare o resettare la variabile: ';
$PHPMAILER_LANG['extension_missing'] = 'Estensione mancante: ';

View File

@ -0,0 +1,27 @@
<?php
/**
* Portuguese (European) PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Jonadabe <jonadabe@hotmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'Erro do SMTP: Não foi possível realizar a autenticação.';
$PHPMAILER_LANG['connect_host'] = 'Erro do SMTP: Não foi possível realizar ligação com o servidor SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'Erro do SMTP: Os dados foram rejeitados.';
$PHPMAILER_LANG['empty_message'] = 'A mensagem no e-mail está vazia.';
$PHPMAILER_LANG['encoding'] = 'Codificação desconhecida: ';
$PHPMAILER_LANG['execute'] = 'Não foi possível executar: ';
$PHPMAILER_LANG['file_access'] = 'Não foi possível aceder o ficheiro: ';
$PHPMAILER_LANG['file_open'] = 'Abertura do ficheiro: Não foi possível abrir o ficheiro: ';
$PHPMAILER_LANG['from_failed'] = 'Ocorreram falhas nos endereços dos seguintes remententes: ';
$PHPMAILER_LANG['instantiate'] = 'Não foi possível iniciar uma instância da função mail.';
$PHPMAILER_LANG['invalid_address'] = 'Não foi enviado nenhum e-mail para o endereço de e-mail inválido: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer não é suportado.';
$PHPMAILER_LANG['provide_address'] = 'Tem de fornecer pelo menos um endereço como destinatário do e-mail.';
$PHPMAILER_LANG['recipients_failed'] = 'Erro do SMTP: O endereço do seguinte destinatário falhou: ';
$PHPMAILER_LANG['signing'] = 'Erro ao assinar: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falhou.';
$PHPMAILER_LANG['smtp_error'] = 'Erro de servidor SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'Não foi possível definir ou redefinir a variável: ';
$PHPMAILER_LANG['extension_missing'] = 'Extensão em falta: ';

View File

@ -0,0 +1,31 @@
<?php
/**
* Turkish PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Elçin Özel
* @author Can Yılmaz
* @author Mehmet Benlioğlu
* @author @yasinaydin
* @author Ogün Karakuş
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP Hatası: Oturum açılamadı.';
$PHPMAILER_LANG['connect_host'] = 'SMTP Hatası: SMTP sunucusuna bağlanılamadı.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Hatası: Veri kabul edilmedi.';
$PHPMAILER_LANG['empty_message'] = 'Mesajın içeriği boş';
$PHPMAILER_LANG['encoding'] = 'Bilinmeyen karakter kodlama: ';
$PHPMAILER_LANG['execute'] = 'Çalıştırılamadı: ';
$PHPMAILER_LANG['file_access'] = 'Dosyaya erişilemedi: ';
$PHPMAILER_LANG['file_open'] = 'Dosya Hatası: Dosya açılamadı: ';
$PHPMAILER_LANG['from_failed'] = 'Belirtilen adreslere gönderme başarısız: ';
$PHPMAILER_LANG['instantiate'] = 'Örnek e-posta fonksiyonu oluşturulamadı.';
$PHPMAILER_LANG['invalid_address'] = 'Geçersiz e-posta adresi: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' e-posta kütüphanesi desteklenmiyor.';
$PHPMAILER_LANG['provide_address'] = 'En az bir alıcı e-posta adresi belirtmelisiniz.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Hatası: Belirtilen alıcılara ulaşılamadı: ';
$PHPMAILER_LANG['signing'] = 'İmzalama hatası: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP connect() fonksiyonu başarısız.';
$PHPMAILER_LANG['smtp_error'] = 'SMTP sunucu hatası: ';
$PHPMAILER_LANG['variable_set'] = 'Değişken ayarlanamadı ya da sıfırlanamadı: ';
$PHPMAILER_LANG['extension_missing'] = 'Eklenti bulunamadı: ';

930
core/class/router.class.php Normal file
View File

@ -0,0 +1,930 @@
<?php
/**
* Chargement des classes filles
* router : aiguillage des pages
*/
require_once('core/class/layout.class.php');
class core extends common
{
/**
* Constructeur du coeur
*/
public function __construct()
{
parent::__construct();
// Token CSRF
if (empty($_SESSION['csrf'])) {
$_SESSION['csrf'] = bin2hex(openssl_random_pseudo_bytes(32));
}
// Fuseau horaire
self::$timezone = $this->getData(['config', 'timezone']); // Utile pour transmettre le timezone à la classe helper
date_default_timezone_set(self::$timezone);
// Supprime les fichiers temporaires
$lastClearTmp = mktime(0, 0, 0);
if ($lastClearTmp > $this->getData(['core', 'lastClearTmp']) + 86400) {
$iterator = new DirectoryIterator(self::TEMP_DIR);
foreach ($iterator as $fileInfos) {
if (
$fileInfos->isFile() &&
$fileInfos->getBasename() !== '.htaccess' &&
$fileInfos->getBasename() !== '.gitkeep'
) {
@unlink($fileInfos->getPathname());
}
}
// Date de la dernière suppression
$this->setData(['core', 'lastClearTmp', $lastClearTmp]);
// Enregistre les données
//$this->SaveData();
}
// Backup automatique des données
$lastBackup = mktime(0, 0, 0);
if (
$this->getData(['config', 'autoBackup'])
and $lastBackup > $this->getData(['core', 'lastBackup']) + 86400
and $this->getData(['user']) // Pas de backup pendant l'installation
) {
// Copie des fichier de données
helper::autoBackup(self::BACKUP_DIR, ['backup', 'tmp', 'file']);
// Date du dernier backup
$this->setData(['core', 'lastBackup', $lastBackup]);
// Supprime les backups de plus de 30 jours
$iterator = new DirectoryIterator(self::BACKUP_DIR);
foreach ($iterator as $fileInfos) {
if (
$fileInfos->isFile()
and $fileInfos->getBasename() !== '.htaccess'
and $fileInfos->getMTime() + (86400 * 30) < time()
) {
@unlink($fileInfos->getPathname());
}
}
}
// Crée le fichier de personnalisation avancée
if (file_exists(self::DATA_DIR . 'custom.css') === false) {
file_put_contents(self::DATA_DIR . 'custom.css', file_get_contents('core/module/theme/resource/custom.css'));
chmod(self::DATA_DIR . 'custom.css', 0755);
}
// Crée le fichier de personnalisation
if (file_exists(self::DATA_DIR . 'theme.css') === false) {
file_put_contents(self::DATA_DIR . 'theme.css', '');
chmod(self::DATA_DIR . 'theme.css', 0755);
}
// Crée le fichier de personnalisation de l'administration
if (file_exists(self::DATA_DIR . 'admin.css') === false) {
file_put_contents(self::DATA_DIR . 'admin.css', '');
chmod(self::DATA_DIR . 'admin.css', 0755);
}
// Check la version rafraichissement du theme
$cssVersion = preg_split('/\*+/', file_get_contents(self::DATA_DIR . 'theme.css'));
if (empty($cssVersion[1]) or $cssVersion[1] !== md5(json_encode($this->getData(['theme'])))) {
// Version
$css = '/*' . md5(json_encode($this->getData(['theme']))) . '*/';
/**
* Import des polices de caractères
* A partir du CDN
* ou dans le dossier site/file/source/fonts
* ou pas du tout si fonte webSafe
*/
// Fonts disponibles
$fontsAvailable['files'] = $this->getData(['fonts', 'files']);
$fontsAvailable['imported'] = $this->getData(['fonts', 'imported']);
$fontsAvailable['websafe'] = self::$fontsWebSafe;
// Fontes installées
$fonts = [
$this->getData(['theme', 'text', 'font']),
$this->getData(['theme', 'title', 'font']),
$this->getData(['theme', 'header', 'font']),
$this->getData(['theme', 'menu', 'font']),
$this->getData(['theme', 'footer', 'font'])
];
// Suppression des polices identiques
$fonts = array_unique($fonts);
/**
* Charge les fontes websafe
*/
$fontFile = '';
foreach ($fonts as $fontId) {
if (isset($fontsAvailable['websafe'][$fontId])) {
$fonts[$fontId] = $fontsAvailable['websafe'][$fontId]['font-family'];
}
}
/**
* Chargement des polices en ligne dans un fichier fonts.html inclus dans main.php
*/
$fontFile = '';
$gf = false;
foreach ($fonts as $fontId) {
if (isset($fontsAvailable['imported'][$fontId])) {
$fontFile .= '<link href="' . $fontsAvailable['imported'][$fontId]['resource'] . '" rel="stylesheet">';
// Tableau pour la construction de la feuille de style
$fonts[$fontId] = $fontsAvailable['imported'][$fontId]['font-family'];
$gf = strpos($fontsAvailable['imported'][$fontId]['resource'], 'fonts.googleapis.com') === false ? $gf || false : $gf || true;
}
}
// Ajoute le préconnect des fontes Googles.
$fontFile = $gf ? '<link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>' . $fontFile
: $fontFile;
// Enregistre la personnalisation
if (!is_dir(self::DATA_DIR . 'fonts')) {
mkdir(self::DATA_DIR . 'fonts');
}
file_put_contents(self::DATA_DIR . 'fonts/fonts.html', $fontFile);
/**
* Fontes installées localement
*/
foreach ($fonts as $fontId) {
// Validité du tableau :
if (isset($fontsAvailable['files'][$fontId])) {
if (file_exists(self::DATA_DIR . 'fonts/' . $fontId)) {
// Chargement de la police
$css .= '@font-face {font-family:"' . $fontsAvailable['files'][$fontId]['font-family'] . '";';
$css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' . $fontsAvailable['files'][$fontId]['resource'] . '");}';
// Tableau pour la construction de la feuille de style
$fonts[$fontId] = $fontsAvailable['files'][$fontId]['font-family'];
} else {
// Le fichier de font n'est pas disponible, fonte par défaut
$fonts[$fontId] = 'verdana';
}
}
}
// Fond du body
$colors = helper::colorVariants($this->getData(['theme', 'body', 'backgroundColor']));
// Body
$css .= 'body{font-family:' . $fonts[$this->getData(['theme', 'text', 'font'])] . ';}';
if ($themeBodyImage = $this->getData(['theme', 'body', 'image'])) {
// Image dans html pour éviter les déformations.
$css .= 'html {background-image:url("../file/source/' . $themeBodyImage . '");background-position:' . $this->getData(['theme', 'body', 'imagePosition']) . ';background-attachment:' . $this->getData(['theme', 'body', 'imageAttachment']) . ';background-size:' . $this->getData(['theme', 'body', 'imageSize']) . ';background-repeat:' . $this->getData(['theme', 'body', 'imageRepeat']) . '}';
// Couleur du body transparente
$css .= 'body {background-color: rgba(0,0,0,0)}';
} else {
// Pas d'image couleur du body
$css .= 'html {background-color:' . $colors['normal'] . ';}';
}
// Icône BacktoTop
$css .= '#backToTop {background-color:' . $this->getData(['theme', 'body', 'toTopbackgroundColor']) . ';color:' . $this->getData(['theme', 'body', 'toTopColor']) . ';}';
// Site
$colors = helper::colorVariants($this->getData(['theme', 'text', 'linkColor']));
$css .= 'a{color:' . $colors['normal'] . '}';
// Couleurs de site dans TinyMCe
$css .= 'div.mce-edit-area {font-family:' . $fonts[$this->getData(['theme', 'text', 'font'])] . ';}';
// Site dans TinyMCE
$css .= '.editorWysiwyg, .editorWysiwygComment {background-color:' . $this->getData(['theme', 'site', 'backgroundColor']) . ';}';
$css .= 'span.mce-text{background-color: unset !important;}';
$css .= 'body,.row > div{font-size:' . $this->getData(['theme', 'text', 'fontSize']) . '}';
$css .= 'body{color:' . $this->getData(['theme', 'text', 'textColor']) . '}';
$css .= 'select,input[type=password],input[type=email],input[type=text],input[type=date],input[type=time],input[type=week],input[type=month],input[type=datetime-local],.inputFile,select,textarea{color:' . $this->getData(['theme', 'text', 'textColor']) . ';background-color:' . $this->getData(['theme', 'site', 'backgroundColor']) . ';}';
// spécifiques au module de blog
$css .= '.blogDate {color:' . $this->getData(['theme', 'text', 'textColor']) . ';}.blogPicture img{border:1px solid ' . $this->getData(['theme', 'text', 'textColor']) . '; box-shadow: 1px 1px 5px ' . $this->getData(['theme', 'text', 'textColor']) . ';}';
// Couleur fixée dans admin.css
$css .= '.container {max-width:' . $this->getData(['theme', 'site', 'width']) . '}';
$margin = $this->getData(['theme', 'site', 'margin']) ? '0' : '20px';
// Marge supplémentaire lorsque le pied de page est fixe
if (
$this->getData(['theme', 'footer', 'fixed']) === true &&
$this->getData(['theme', 'footer', 'position']) === 'body'
) {
$marginBottomLarge = ((str_replace('px', '', $this->getData(['theme', 'footer', 'height'])) * 2) + 31) . 'px';
$marginBottomSmall = ((str_replace('px', '', $this->getData(['theme', 'footer', 'height'])) * 2) + 93) . 'px';
} else {
$marginBottomSmall = $margin;
$marginBottomLarge = $margin;
}
$css .= $this->getData(['theme', 'site', 'width']) === '100%'
? '@media (min-width: 769px) {#site{margin:0 auto ' . $marginBottomLarge . ' 0 !important;}}@media (max-width: 768px) {#site{margin:0 auto ' . $marginBottomSmall . ' 0 !important;}}#site.light{margin:5% auto !important;} body{margin:0 auto !important;} #bar{margin:0 auto !important;} body > header{margin:0 auto !important;} body > nav {margin: 0 auto !important;} body > footer {margin:0 auto !important;}'
: '@media (min-width: 769px) {#site{margin: ' . $margin . ' auto ' . $marginBottomLarge . ' auto !important;}}@media (max-width: 768px) {#site{margin: ' . $margin . ' auto ' . $marginBottomSmall . ' auto !important;}}#site.light{margin: 5% auto !important;} body{margin:0px 10px;} #bar{margin: 0 -10px;} body > header{margin: 0 -10px;} body > nav {margin: 0 -10px;} body > footer {margin: 0 -10px;} ';
$css .= $this->getData(['theme', 'site', 'width']) === '750px'
? '.button, button{font-size:0.8em;}'
: '';
$css .= '#site{background-color:' . $this->getData(['theme', 'site', 'backgroundColor']) . ';border-radius:' . $this->getData(['theme', 'site', 'radius']) . ';box-shadow:' . $this->getData(['theme', 'site', 'shadow']) . ' #212223;}';
$colors = helper::colorVariants($this->getData(['theme', 'button', 'backgroundColor']));
$css .= '.speechBubble,.button,.button:hover,button[type=submit],.pagination a,.pagination a:hover,input[type=checkbox]:checked + label:before,input[type=radio]:checked + label:before,.helpContent{background-color:' . $colors['normal'] . ';color:' . $colors['text'] . '}';
$css .= '.helpButton span{color:' . $colors['normal'] . '}';
$css .= 'input[type=text]:hover,input[type=date]:hover,input[type=time]:hover,input[type=week]:hover,input[type=month]:hover,input[type=datetime-local]:hover,input[type=password]:hover,.inputFile:hover,select:hover,textarea:hover{border-color:' . $colors['normal'] . '}';
$css .= '.speechBubble:before{border-color:' . $colors['normal'] . ' transparent transparent transparent}';
$css .= '.button:hover,button[type=submit]:hover,.pagination a:hover,input[type=checkbox]:not(:active):checked:hover + label:before,input[type=checkbox]:active + label:before,input[type=radio]:checked:hover + label:before,input[type=radio]:not(:checked):active + label:before{background-color:' . $colors['darken'] . '}';
$css .= '.helpButton span:hover{color:' . $colors['darken'] . '}';
$css .= '.button:active,button[type=submit]:active,.pagination a:active{background-color:' . $colors['veryDarken'] . '}';
$colors = helper::colorVariants($this->getData(['theme', 'title', 'textColor']));
$css .= 'h1,h2,h3,h4,h5,h6,h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:' . $colors['normal'] . ';font-family:' . $fonts[$this->getData(['theme', 'title', 'font'])] . ';font-weight:' . $this->getData(['theme', 'title', 'fontWeight']) . ';text-transform:' . $this->getData(['theme', 'title', 'textTransform']) . '}';
$css .= 'h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover{color:' . $colors['darken'] . '}';
// Les blocs
$colors = helper::colorVariants($this->getData(['theme', 'block', 'backgroundColor']));
$css .= '.block {border: 1px solid ' . $this->getdata(['theme', 'block', 'borderColor']) . ';}.block h4 {background-color:' . $colors['normal'] . ';color:' . $colors['text'] . ';}';
// Bannière
// Eléments communs
if ($this->getData(['theme', 'header', 'margin'])) {
if ($this->getData(['theme', 'menu', 'position']) === 'site-first') {
$css .= 'header{margin:0 20px}';
} else {
$css .= 'header{margin:20px 20px 0 20px}';
}
}
$colors = helper::colorVariants($this->getData(['theme', 'header', 'backgroundColor']));
$css .= 'header{background-color:' . $colors['normal'] . ';}';
// Bannière de type papier peint
if ($this->getData(['theme', 'header', 'feature']) === 'wallpaper') {
$css .= 'header{background-size:' . $this->getData(['theme', 'header', 'imageContainer']) . '}';
$css .= 'header{background-color:' . $colors['normal'];
// Valeur de hauteur traditionnelle
$css .= ';height:' . $this->getData(['theme', 'header', 'height']) . ';line-height:' . $this->getData(['theme', 'header', 'height']);
$css .= ';text-align:' . $this->getData(['theme', 'header', 'textAlign']) . '}';
if ($themeHeaderImage = $this->getData(['theme', 'header', 'image'])) {
$css .= 'header{background-image:url("../file/source/' . $themeHeaderImage . '");background-position:' . $this->getData(['theme', 'header', 'imagePosition']) . ';background-repeat:' . $this->getData(['theme', 'header', 'imageRepeat']) . '}';
}
$colors = helper::colorVariants($this->getData(['theme', 'header', 'textColor']));
$css .= 'header span{color:' . $colors['normal'] . ';font-family:' . $fonts[$this->getData(['theme', 'header', 'font'])] . ';font-weight:' . $this->getData(['theme', 'header', 'fontWeight']) . ';font-size:' . $this->getData(['theme', 'header', 'fontSize']) . ';text-transform:' . $this->getData(['theme', 'header', 'textTransform']) . '}';
}
// Bannière au Contenu HTML
if ($this->getData(['theme', 'header', 'feature']) === 'feature') {
// Hauteur de la taille du contenu perso
$css .= 'header {height:' . $this->getData(['theme', 'header', 'height']) . '; min-height:' . $this->getData(['theme', 'header', 'height']) . ';overflow: hidden;}';
}
// Menu
$colors = helper::colorVariants($this->getData(['theme', 'menu', 'backgroundColor']));
$css .= 'nav,nav.navMain a{background-color:' . $colors['normal'] . '}';
$css .= 'nav a,#toggle span,nav a:hover{color:' . $this->getData(['theme', 'menu', 'textColor']) . '}';
$css .= 'nav a:hover{background-color:' . $colors['darken'] . '}';
$css .= 'nav a.active{color:' . $this->getData(['theme', 'menu', 'activeTextColor']) . ';}';
if ($this->getData(['theme', 'menu', 'activeColorAuto']) === true) {
$css .= 'nav a.active{background-color:' . $colors['veryDarken'] . '}';
} else {
$css .= 'nav a.active{background-color:' . $this->getData(['theme', 'menu', 'activeColor']) . '}';
}
$css .= 'nav #burgerText{color:' . $colors['text'] . '}';
// Sous menu
$colors = helper::colorVariants($this->getData(['theme', 'menu', 'backgroundColorSub']));
$css .= 'nav .navSub a{background-color:' . $colors['normal'] . '}';
$css .= 'nav .navMain a.active {border-radius:' . $this->getData(['theme', 'menu', 'radius']) . '}';
$css .= '#menu{text-align:' . $this->getData(['theme', 'menu', 'textAlign']) . '}';
if ($this->getData(['theme', 'menu', 'margin'])) {
if (
$this->getData(['theme', 'menu', 'position']) === 'site-first'
or $this->getData(['theme', 'menu', 'position']) === 'site-second'
) {
$css .= 'nav{padding:10px 10px 0 10px;}';
} else {
$css .= 'nav{padding:0 10px}';
}
} else {
$css .= 'nav{margin:0}';
}
if (
$this->getData(['theme', 'menu', 'position']) === 'top'
) {
$css .= 'nav{padding:0 10px;}';
}
$css .= '#toggle span,#menu a{padding:' . $this->getData(['theme', 'menu', 'height']) . ';font-family:' . $fonts[$this->getData(['theme', 'menu', 'font'])] . ';font-weight:' . $this->getData(['theme', 'menu', 'fontWeight']) . ';font-size:' . $this->getData(['theme', 'menu', 'fontSize']) . ';text-transform:' . $this->getData(['theme', 'menu', 'textTransform']) . '}';
// Pied de page
$colors = helper::colorVariants($this->getData(['theme', 'footer', 'backgroundColor']));
if ($this->getData(['theme', 'footer', 'margin'])) {
$css .= 'footer{padding:0 20px;}';
} else {
$css .= 'footer{padding:0}';
}
$css .= 'footer span, #footerText > p {color:' . $this->getData(['theme', 'footer', 'textColor']) . ';font-family:' . $fonts[$this->getData(['theme', 'footer', 'font'])] . ';font-weight:' . $this->getData(['theme', 'footer', 'fontWeight']) . ';font-size:' . $this->getData(['theme', 'footer', 'fontSize']) . ';text-transform:' . $this->getData(['theme', 'footer', 'textTransform']) . '}';
$css .= 'footer {background-color:' . $colors['normal'] . ';color:' . $this->getData(['theme', 'footer', 'textColor']) . '}';
$css .= 'footer a{color:' . $this->getData(['theme', 'footer', 'textColor']) . '}';
$css .= 'footer #footersite > div {margin:' . $this->getData(['theme', 'footer', 'height']) . ' 0}';
$css .= 'footer #footerbody > div {margin:' . $this->getData(['theme', 'footer', 'height']) . ' 0}';
$css .= '@media (max-width: 768px) {footer #footerbody > div { padding: 2px }}';
$css .= '#footerSocials{text-align:' . $this->getData(['theme', 'footer', 'socialsAlign']) . '}';
$css .= '#footerText > p {text-align:' . $this->getData(['theme', 'footer', 'textAlign']) . '}';
$css .= '#footerCopyright{text-align:' . $this->getData(['theme', 'footer', 'copyrightAlign']) . '}';
// Enregistre les fontes
if (!is_dir(self::DATA_DIR . 'fonts')) {
mkdir(self::DATA_DIR . 'fonts');
}
file_put_contents(self::DATA_DIR . 'fonts/fonts.html', $fontFile);
// Enregistre la personnalisation
file_put_contents(self::DATA_DIR . 'theme.css', $css);
// Effacer le cache pour tenir compte de la couleur de fond TinyMCE
header("Expires: Tue, 01 Jan 2000 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
}
// Check la version rafraichissement du theme admin
$cssVersion = preg_split('/\*+/', file_get_contents(self::DATA_DIR . 'admin.css'));
if (empty($cssVersion[1]) or $cssVersion[1] !== md5(json_encode($this->getData(['admin'])))) {
// Version
$css = '/*' . md5(json_encode($this->getData(['admin']))) . '*/';
// Fonts disponibles
$fontsAvailable['files'] = $this->getData(['fonts', 'files']);
$fontsAvailable['imported'] = $this->getData(['fonts', 'imported']);
$fontsAvailable['websafe'] = self::$fontsWebSafe;
/**
* Import des polices de caractères
* A partir du CDN ou dans le dossier site/file/source/fonts
*/
$fonts = [
$this->getData(['admin', 'fontText']),
$this->getData(['admin', 'fontTitle']),
];
// Suppression des polices identiques
$fonts = array_unique($fonts);
/**
* Charge les fontes websafe
*/
$fontFile = '';
foreach ($fonts as $fontId) {
if (isset($fontsAvailable['websafe'][$fontId])) {
$fonts[$fontId] = $fontsAvailable['websafe'][$fontId]['font-family'];
}
}
/**
* Chargement des polices en ligne dans un fichier fonts.html inclus dans main.php
*/
$fontFile = '';
foreach ($fonts as $fontId) {
if (isset($fontsAvailable['imported'][$fontId])) {
$fontFile .= '<link href="' . $fontsAvailable['imported'][$fontId]['resource'] . '" rel="stylesheet">';
// Tableau pour la construction de la feuille de style
$fonts[$fontId] = $fontsAvailable['imported'][$fontId]['font-family'];
}
}
// Enregistre la personnalisation
file_put_contents(self::DATA_DIR . 'fonts/fonts.html', $fontFile);
/**
* Fontes installées localement
*/
foreach ($fonts as $fontId) {
// Validité du tableau :
if (isset($fontsAvailable['files'][$fontId])) {
if (file_exists(self::DATA_DIR . 'fonts/' . $fontId)) {
// Chargement de la police
$css .= '@font-face {font-family:"' . $fontsAvailable['files'][$fontId]['font-family'] . '";';
$css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' . $fontsAvailable['files'][$fontId]['resource'] . '");}';
// Tableau pour la construction de la feuille de style
$fonts[$fontId] = $fontsAvailable['files'][$fontId]['font-family'];
} else {
// Le fichier de font n'est pas disponible, fonte par défaut
$fonts[$fontId] = 'verdana';
}
}
}
// Thème Administration
$colors = helper::colorVariants($this->getData(['admin', 'backgroundColor']));
$css .= '#site{background-color:' . $colors['normal'] . ';}';
$css .= 'p, div, label, select, input, table, span {font-family:' . $fonts[$this->getData(['admin', 'fontText'])] . '}';
$css .= 'body,.row > div {font-size:' . $this->getData(['admin', 'fontSize']) . '}';
$css .= 'body h1, h2, h3, h4 a, h5, h6 {font-family:' . $fonts[$this->getData(['admin', 'fontTitle'])] . ';color:' . $this->getData(['admin', 'colorTitle']) . ';}';
// TinyMCE
$colors = helper::colorVariants($this->getData(['admin', 'colorText']));
$css .= 'body:not(.editorWysiwyg), body:not(editorWysiwygComment),span .zwiico-help {color:' . $colors['normal'] . ';}';
$css .= 'table thead tr, table thead tr .zwiico-help{ background-color:' . $colors['normal'] . '; color:' . $colors['text'] . ';}';
$css .= 'table thead th { color:' . $colors['text'] . ';}';
$colors = helper::colorVariants($this->getData(['admin', 'backgroundColorButton']));
$css .= 'input[type=checkbox]:checked + label::before,.speechBubble{background-color:' . $colors['normal'] . ';color:' . $colors['text'] . ';}';
$css .= '.speechBubble::before {border-color:' . $colors['normal'] . ' transparent transparent transparent;}';
$css .= '.button {background-color:' . $colors['normal'] . ';color:' . $colors['text'] . ';}.button:hover {background-color:' . $colors['darken'] . ';color:' . $colors['text'] . ';}.button:active {background-color:' . $colors['veryDarken'] . ';color:' . $colors['text'] . ';}';
$colors = helper::colorVariants($this->getData(['admin', 'backgroundColorButtonGrey']));
$css .= '.button.buttonGrey {background-color: ' . $colors['normal'] . ';color: ' . $colors['text'] . ';}.button.buttonGrey:hover {background-color:' . $colors['darken'] . ';color:' . $colors['text'] . ';}.button.buttonGrey:active {background-color:' . $colors['veryDarken'] . ';color:' . $colors['text'] . ';}';
$colors = helper::colorVariants($this->getData(['admin', 'backgroundColorButtonRed']));
$css .= '.button.buttonRed {background-color: ' . $colors['normal'] . ';color: ' . $colors['text'] . ';}.button.buttonRed:hover {background-color:' . $colors['darken'] . ';color:' . $colors['text'] . ';}.button.buttonRed:active {background-color:' . $colors['veryDarken'] . ';color:' . $colors['text'] . ';}';
$colors = helper::colorVariants($this->getData(['admin', 'backgroundColorButtonHelp']));
$css .= '.button.buttonHelp {background-color: ' . $colors['normal'] . ';color: ' . $colors['text'] . ';}.button.buttonHelp:hover {background-color:' . $colors['darken'] . ';color:' . $colors['text'] . ';}.button.buttonHelp:active {background-color:' . $colors['veryDarken'] . ';color:' . $colors['text'] . ';}';
$colors = helper::colorVariants($this->getData(['admin', 'backgroundColorButtonGreen']));
$css .= '.button.buttonGreen, button[type=submit] {background-color: ' . $colors['normal'] . ';color: ' . $colors['text'] . ';}.button.buttonGreen:hover, button[type=submit]:hover {background-color: ' . $colors['darken'] . ';color: ' . $colors['text'] . ';}.button.buttonGreen:active, button[type=submit]:active {background-color: ' . $colors['darken'] . ';color: ' . $colors['text'] . ';}';
$colors = helper::colorVariants($this->getData(['admin', 'backgroundBlockColor']));
$css .= '.buttonTab, .block {border: 1px solid ' . $this->getData(['admin', 'borderBlockColor']) . ';}.buttonTab, .block h4 {background-color: ' . $colors['normal'] . ';color:' . $colors['text'] . ';}';
$css .= 'table tr,input[type=email],input[type=date],input[type=time],input[type=month],input[type=week],input[type=datetime-local],input[type=text],input[type=password],select:not(#barSelectLanguage),select:not(#barSelectPage),textarea:not(.editorWysiwyg), textarea:not(.editorWysiwygComment),.inputFile{background-color: ' . $colors['normal'] . ';color:' . $colors['text'] . ';border: 1px solid ' . $this->getData(['admin', 'borderBlockColor']) . ';}';
// Bordure du contour TinyMCE
$css .= '.mce-tinymce{border: 1px solid ' . $this->getData(['admin', 'borderBlockColor']) . '!important;}';
// Enregistre la personnalisation
file_put_contents(self::DATA_DIR . 'admin.css', $css);
}
}
/**
* Auto-chargement des classes
* @param string $className Nom de la classe à charger
*/
public static function autoload($className)
{
$classPath = strtolower($className) . '/' . strtolower($className) . '.php';
// Module du coeur
if (is_readable('core/module/' . $classPath)) {
require 'core/module/' . $classPath;
}
// Module
elseif (is_readable(self::MODULE_DIR . $classPath)) {
require self::MODULE_DIR . $classPath;
}
// Librairie
elseif (is_readable('core/vendor/' . $classPath)) {
require 'core/vendor/' . $classPath;
}
}
/**
* Routage des modules
*/
public function router()
{
//
$layout = new layout($this);
// Installation
if (
$this->getData(['user']) === []
and $this->getUrl(0) !== 'install'
) {
http_response_code(302);
header('Location:' . helper::baseUrl() . 'install');
exit();
}
// Journalisation
$dataLog = helper::dateUTF8('%Y %m %d', time()) . ' - ' . helper::dateUTF8('%H:%M', time());
$dataLog .= helper::getIp($this->getData(['config', 'connect', 'anonymousIp'])) . ';';
$dataLog .= $this->getUser('id') ? $this->getUser('id') . ';' : 'anonyme' . ';';
$dataLog .= $this->getUrl();
$dataLog .= PHP_EOL;
if ($this->getData(['config', 'connect', 'log'])) {
file_put_contents(self::DATA_DIR . 'journal.log', $dataLog, FILE_APPEND);
}
// Force la déconnexion des membres bannis ou d'une seconde session
if (
$this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
and ($this->getUser('group') === self::GROUP_BANNED
or ($_SESSION['csrf'] !== $this->getData(['user', $this->getUser('id'), 'accessCsrf'])
and $this->getData(['config', 'connect', 'autoDisconnect']) === true)
)
) {
$user = new user;
$user->logout();
}
// Mode maintenance
if (
$this->getData(['config', 'maintenance'])
and in_array($this->getUrl(0), ['maintenance', 'user']) === false
and $this->getUrl(1) !== 'login'
and ($this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
and $this->getUser('group') < self::GROUP_ADMIN
)
)
) {
// Déconnexion
$user = new user;
$user->logout();
// Redirection
http_response_code(302);
header('Location:' . helper::baseUrl() . 'maintenance');
exit();
}
// Check l'accès à la page
$access = null;
if ($this->getData(['page', $this->getUrl(0)]) !== null) {
if (
$this->getData(['page', $this->getUrl(0), 'group']) === self::GROUP_VISITOR
or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
and $this->getUser('group') >= $this->getData(['page', $this->getUrl(0), 'group'])
)
) {
$access = true;
} else {
if ($this->getUrl(0) === $this->getData(['locale', 'homePageId'])) {
$access = 'login';
} else {
$access = false;
}
}
// Empêcher l'accès aux pages désactivées par URL directe
if (
($this->getData(['page', $this->getUrl(0), 'disable']) === true
and $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
) or ($this->getData(['page', $this->getUrl(0), 'disable']) === true
and $this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
and $this->getUser('group') < self::GROUP_MODERATOR
)
) {
$access = false;
}
}
/**
* Contrôle si la page demandée est en édition ou accès à la gestion du site
* conditions de blocage :
* - Les deux utilisateurs qui accèdent à la même page sont différents
* - les URLS sont identiques
* - Une partie de l'URL fait partie de la liste de filtrage (édition d'un module etc..)
* - L'édition est ouverte depuis un temps dépassé, on considère que la page est restée ouverte et qu'elle ne sera pas validée
*/
$accessInfo['userName'] = '';
$accessInfo['pageId'] = '';
foreach ($this->getData(['user']) as $userId => $userIds) {
if (!is_null($this->getData(['user', $userId, 'accessUrl']))) {
$t = explode('/', $this->getData(['user', $userId, 'accessUrl']));
}
if (
$this->getUser('id') &&
$userId !== $this->getUser('id') &&
$this->getData(['user', $userId, 'accessUrl']) === $this->getUrl() &&
array_intersect($t, self::$accessList) &&
array_intersect($t, self::$accessExclude) !== false &&
time() < $this->getData(['user', $userId, 'accessTimer']) + self::ACCESS_TIMER
) {
$access = false;
$accessInfo['userName'] = $this->getData(['user', $userId, 'lastname']) . ' ' . $this->getData(['user', $userId, 'firstname']);
$accessInfo['pageId'] = end($t);
}
}
// Accès concurrent stocke la page visitée
if (
$this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
&& $this->getUser('id')
) {
$this->setData(['user', $this->getUser('id'), 'accessUrl', $this->getUrl()]);
$this->setData(['user', $this->getUser('id'), 'accessTimer', time()]);
}
// Breadcrumb
$title = $this->getData(['page', $this->getUrl(0), 'title']);
if (
!empty($this->getData(['page', $this->getUrl(0), 'parentPageId'])) &&
$this->getData(['page', $this->getUrl(0), 'breadCrumb'])
) {
$title = '<a href="' . helper::baseUrl() .
$this->getData(['page', $this->getUrl(0), 'parentPageId']) .
'">' .
ucfirst($this->getData(['page', $this->getData(['page', $this->getUrl(0), 'parentPageId']), 'title'])) .
'</a> &#8250; ' .
$this->getData(['page', $this->getUrl(0), 'title']);
}
// Importe le style de la page principale
$inlineStyle[] = $this->getData(['page', $this->getUrl(0), 'css']) === null ? '' : $this->getData(['page', $this->getUrl(0), 'css']);
// Importe le script de la page principale
$inlineScript[] = $this->getData(['page', $this->getUrl(0), 'js']) === null ? '' : $this->getData(['page', $this->getUrl(0), 'js']);
// Importe le contenu, le CSS et le script des barres
$contentRight = $this->getData(['page', $this->getUrl(0), 'barRight']) ? $this->getPage($this->getData(['page', $this->getUrl(0), 'barRight']), self::$i18nContent) : '';
$inlineStyle[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'css']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'css']);
$inlineScript[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'js']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'js']);
$contentLeft = $this->getData(['page', $this->getUrl(0), 'barLeft']) ? $this->getPage($this->getData(['page', $this->getUrl(0), 'barLeft']), self::$i18nContent) : '';
$inlineStyle[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'css']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'css']);
$inlineScript[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'js']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'js']);
// Importe la page simple sans module ou avec un module inexistant
if (
$this->getData(['page', $this->getUrl(0)]) !== null
and ($this->getData(['page', $this->getUrl(0), 'moduleId']) === ''
or !class_exists($this->getData(['page', $this->getUrl(0), 'moduleId']))
)
and $access
) {
// Importe le CSS de la page principale
$this->addOutput([
'title' => $title,
'content' => $this->getPage($this->getUrl(0), self::$i18nContent),
'metaDescription' => $this->getData(['page', $this->getUrl(0), 'metaDescription']),
'metaTitle' => $this->getData(['page', $this->getUrl(0), 'metaTitle']),
'typeMenu' => $this->getData(['page', $this->getUrl(0), 'typeMenu']),
'iconUrl' => $this->getData(['page', $this->getUrl(0), 'iconUrl']),
'disable' => $this->getData(['page', $this->getUrl(0), 'disable']),
'contentRight' => $contentRight,
'contentLeft' => $contentLeft,
'inlineStyle' => $inlineStyle,
'inlineScript' => $inlineScript,
]);
}
// Importe le module
else {
// Id du module, et valeurs en sortie de la page s'il s'agit d'un module de page
if ($access and $this->getData(['page', $this->getUrl(0), 'moduleId'])) {
$moduleId = $this->getData(['page', $this->getUrl(0), 'moduleId']);
// Construit un meta absent
$metaDescription = $this->getData(['page', $this->getUrl(0), 'moduleId']) === 'blog' && !empty($this->getUrl(1)) && in_array($this->getUrl(1), $this->getData(['module']))
? strip_tags(substr($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'content']), 0, 159))
: $this->getData(['page', $this->getUrl(0), 'metaDescription']);
// Importe le CSS de la page principale
$pageContent = $this->getPage($this->getUrl(0), self::$i18nContent);
$this->addOutput([
'title' => $title,
// Meta description = 160 premiers caractères de l'article
'content' => $pageContent,
'metaDescription' => $metaDescription,
'metaTitle' => $this->getData(['page', $this->getUrl(0), 'metaTitle']),
'typeMenu' => $this->getData(['page', $this->getUrl(0), 'typeMenu']),
'iconUrl' => $this->getData(['page', $this->getUrl(0), 'iconUrl']),
'disable' => $this->getData(['page', $this->getUrl(0), 'disable']),
'contentRight' => $contentRight,
'contentLeft' => $contentLeft,
'inlineStyle' => $inlineStyle,
'inlineScript' => $inlineScript,
]);
} else {
$moduleId = $this->getUrl(0);
$pageContent = '';
}
// Check l'existence du module
if (class_exists($moduleId)) {
/** @var common $module */
$module = new $moduleId;
// Check l'existence de l'action
$action = '';
$ignore = true;
if (!is_null($this->getUrl(1))) {
foreach (explode('-', $this->getUrl(1)) as $actionPart) {
if ($ignore) {
$action .= $actionPart;
$ignore = false;
} else {
$action .= ucfirst($actionPart);
}
}
}
$action = array_key_exists($action, $module::$actions) ? $action : 'index';
if (array_key_exists($action, $module::$actions)) {
$module->$action();
$output = $module->output;
// Check le groupe de l'utilisateur
if (
($module::$actions[$action] === self::GROUP_VISITOR
or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
and $this->getUser('group') >= $module::$actions[$action]
)
)
and $output['access'] === true
) {
// Enregistrement du contenu de la méthode POST lorsqu'une notice est présente
if (common::$inputNotices) {
foreach ($_POST as $postId => $postValue) {
if (is_array($postValue)) {
foreach ($postValue as $subPostId => $subPostValue) {
self::$inputBefore[$postId . '_' . $subPostId] = $subPostValue;
}
} else {
self::$inputBefore[$postId] = $postValue;
}
}
}
// Sinon traitement des données de sortie qui requiert qu'aucune notice ne soit présente
else {
// Notification
if ($output['notification']) {
if ($output['state'] === true) {
$notification = 'ZWII_NOTIFICATION_SUCCESS';
} elseif ($output['state'] === false) {
$notification = 'ZWII_NOTIFICATION_ERROR';
} else {
$notification = 'ZWII_NOTIFICATION_OTHER';
}
$_SESSION[$notification] = $output['notification'];
}
// Redirection
if ($output['redirect']) {
http_response_code(301);
header('Location:' . $output['redirect']);
exit();
}
}
// Données en sortie applicables même lorsqu'une notice est présente
// Affichage
if ($output['display']) {
$this->addOutput([
'display' => $output['display']
]);
}
// Contenu brut
if ($output['content']) {
$this->addOutput([
'content' => $output['content']
]);
}
// Contenu par vue
elseif ($output['view']) {
// Chemin en fonction d'un module du coeur ou d'un module
$modulePath = in_array($moduleId, self::$coreModuleIds) ? 'core/' : '';
// CSS
$stylePath = $modulePath . self::MODULE_DIR . $moduleId . '/view/' . $output['view'] . '/' . $output['view'] . '.css';
if (file_exists($stylePath)) {
$this->addOutput([
'style' => file_get_contents($stylePath)
]);
}
if ($output['style']) {
$this->addOutput([
'style' => file_get_contents($output['style'])
]);
}
// JS
$scriptPath = $modulePath . self::MODULE_DIR . $moduleId . '/view/' . $output['view'] . '/' . $output['view'] . '.js.php';
if (file_exists($scriptPath)) {
ob_start();
include $scriptPath;
$this->addOutput([
'script' => ob_get_clean()
]);
}
// Vue
$viewPath = $modulePath . self::MODULE_DIR . $moduleId . '/view/' . $output['view'] . '/' . $output['view'] . '.php';
if (file_exists($viewPath)) {
ob_start();
include $viewPath;
$modpos = $this->getData(['page', $this->getUrl(0), 'modulePosition']);
if ($modpos === 'top') {
$this->addOutput([
'content' => ob_get_clean() . ($output['showPageContent'] ? $pageContent : '')
]);
} else if ($modpos === 'free') {
if (strstr($pageContent, '[MODULE]', true) === false) {
$begin = strstr($pageContent, '[]', true);
} else {
$begin = strstr($pageContent, '[MODULE]', true);
}
if (strstr($pageContent, '[MODULE]') === false) {
$end = strstr($pageContent, '[]');
} else {
$end = strstr($pageContent, '[MODULE]');
}
$cut = 8;
$end = substr($end, -strlen($end) + $cut);
$this->addOutput([
'content' => ($output['showPageContent'] ? $begin : '') . ob_get_clean() . ($output['showPageContent'] ? $end : '')
]);
} else {
$this->addOutput([
'content' => ($output['showPageContent'] ? $pageContent : '') . ob_get_clean()
]);
}
}
}
// Librairies
if ($output['vendor'] !== $this->output['vendor']) {
$this->addOutput([
'vendor' => array_merge($this->output['vendor'], $output['vendor'])
]);
}
if ($output['title'] !== null) {
$this->addOutput([
'title' => $output['title']
]);
}
// Affiche le bouton d'édition de la page dans la barre de membre
if ($output['showBarEditButton']) {
$this->addOutput([
'showBarEditButton' => $output['showBarEditButton']
]);
}
}
// Erreur 403
else {
$access = false;
}
}
}
}
// Erreurs
if ($access === 'login') {
http_response_code(302);
header('Location:' . helper::baseUrl() . 'user/login/');
exit();
}
if ($access === false) {
http_response_code(403);
if ($accessInfo['userName']) {
$this->addOutput([
'title' => 'Accès verrouillé',
'content' => template::speech(sprintf(helper::translate('La page %s est ouverte par l\'utilisateur %s'), $accessInfo['pageId'], $accessInfo['userName']))
]);
} else {
if (
$this->getData(['locale', 'page403']) !== 'none'
and $this->getData(['page', $this->getData(['locale', 'page403'])])
) {
header('Location:' . helper::baseUrl() . $this->getData(['locale', 'page403']));
} else {
$this->addOutput([
'title' => 'Accès interdit',
'content' => template::speech(helper::translate('Vous n\'êtes pas autorisé à consulter cette page (erreur 403)'))
]);
}
}
} elseif ($this->output['content'] === '') {
http_response_code(404);
if (
$this->getData(['locale', 'page404']) !== 'none'
and $this->getData(['page', $this->getData(['locale', 'page404'])])
) {
header('Location:' . helper::baseUrl() . $this->getData(['locale', 'page404']));
} else {
$this->addOutput([
'title' => 'Page indisponible',
'content' => template::speech(helper::translate('La page demandée n\'existe pas ou est introuvable (erreur 404)'))
]);
}
}
// Mise en forme des métas
if ($this->output['metaTitle'] === '') {
if ($this->output['title']) {
$this->addOutput([
'metaTitle' => strip_tags($this->output['title']) . ' - ' . $this->getData(['locale', 'title'])
]);
} else {
$this->addOutput([
'metaTitle' => $this->getData(['locale', 'title'])
]);
}
}
if ($this->output['metaDescription'] === '') {
$this->addOutput([
'metaDescription' => $this->getData(['locale', 'metaDescription'])
]);
}
switch ($this->output['display']) {
// Layout brut
case self::DISPLAY_RAW:
echo $this->output['content'];
break;
// Layout vide
case self::DISPLAY_LAYOUT_BLANK:
require 'core/layout/blank.php';
break;
// Affichage en JSON
case self::DISPLAY_JSON:
header('Content-Type: application/json');
echo json_encode($this->output['content']);
break;
// RSS feed
case self::DISPLAY_RSS:
header('Content-type: application/rss+xml; charset=UTF-8');
echo $this->output['content'];
break;
// Layout allégé
case self::DISPLAY_LAYOUT_LIGHT:
ob_start();
require 'core/layout/light.php';
// Supprime les espaces, les sauts de ligne, les tabulations et autres caractères inutiles
$content = preg_replace('/\s+/u', ' ', ob_get_clean());
// Convertit la chaîne en UTF-8 pour conserver les caractères accentués
$content = mb_convert_encoding($content, 'UTF-8', 'UTF-8');
echo $content;
break;
// Layout principal
case self::DISPLAY_LAYOUT_MAIN:
ob_start();
require 'core/layout/main.php';
// Supprime les espaces, les sauts de ligne, les tabulations et autres caractères inutiles
$content = preg_replace('/\s+/u', ' ', ob_get_clean());
// Convertit la chaîne en UTF-8 pour conserver les caractères accentués
$content = mb_convert_encoding($content, 'UTF-8', 'UTF-8');
echo $content;
break;
}
}
}

View File

@ -224,6 +224,7 @@ class template
* Crée un champ date
* @param string $nameId Nom et id du champ
* @param array $attributes Attributs ($key => $value)
* @param string type date time datetime-local month week
* @return string
*/
public static function date($nameId, array $attributes = [])
@ -241,8 +242,9 @@ class template
'label' => '',
'name' => $nameId,
'placeholder' => '',
'readonly' => true,
'value' => ''
'readonly' => false,
'value' => '',
'type'=> 'date',
], $attributes);
// Traduction de l'aide et de l'étiquette
$attributes['label'] = helper::translate($attributes['label']);
@ -272,15 +274,11 @@ class template
// Date visible
$html .= '<div class="inputDateManagerWrapper">';
$html .= sprintf(
'<input type="text" class="datepicker %s" value="%s" %s>',
'<input type="' . $attributes['type'] . '" class="datepicker %s" value="%s" %s>',
$attributes['class'],
$attributes['value'],
helper::sprintAttributes($attributes, ['class', 'value'])
);
$html .= self::button($attributes['id'] . 'Delete', [
'class' => 'inputDateDelete',
'value' => self::ico('cancel')
]);
$html .= '</div>';
// Fin du wrapper
$html .= '</div>';
@ -288,6 +286,7 @@ class template
return $html;
}
/**
* Crée un champ d'upload de fichier
* @param string $nameId Nom et id du champ
@ -468,12 +467,12 @@ class template
'attr' => '',
'help' => '',
'id' => '',
'alt' => '',
], $attributes);
// Traduction de l'aide
$attributes['help'] = helper::translate($attributes['help']);
// Contenu de l'icône
$item = $attributes['href'] ? '<a id="' . $attributes['id'] . '" data-tippy-content="' . $attributes['help'] . '" alt="' . $attributes['help'] . '" href="' . $attributes['href'] . '" ' . $attributes['attr'] . ' >' : '';
$alt = $attributes['help'] ? $attributes['help'] : $ico;
$item = $attributes['href'] ? '<a id="' . $attributes['id'] . '" data-tippy-content="' . $attributes['help'] . '" alt="' . $alt . '" href="' . $attributes['href'] . '" ' . $attributes['attr'] . ' >' : '';
$item .= '<span class="zwiico-' . $ico . ($attributes['margin'] ? ' zwiico-margin-' . $attributes['margin'] : '') . ($attributes['animate'] ? ' animate-spin' : '') . '" style="font-size:' . $attributes['fontSize'] . '"><!----></span>';
$item .= ($attributes['href']) ? '</a>' : '';
return $item;

View File

@ -16,8 +16,8 @@ var core = {};
/**
* Crée un message d'alerte
*/
core.alert = function(text) {
var lightbox = lity(function($) {
core.alert = function (text) {
var lightbox = lity(function ($) {
return $("<div>")
.addClass("lightbox")
.append(
@ -28,14 +28,14 @@ core.alert = function(text) {
$("<a>")
.addClass("button")
.text("Ok")
.on("click", function() {
.on("click", function () {
lightbox.close();
})
)
)
}(jQuery));
// Validation de la lightbox avec le bouton entrée
$(document).on("keyup", function(event) {
$(document).on("keyup", function (event) {
if (event.keyCode === 13) {
lightbox.close();
}
@ -46,7 +46,7 @@ core.alert = function(text) {
/**
* Génère des variations d'une couleur
*/
core.colorVariants = function(rgba) {
core.colorVariants = function (rgba) {
rgba = rgba.match(/\(+(.*)\)/);
rgba = rgba[1].split(", ");
return {
@ -60,8 +60,8 @@ core.colorVariants = function(rgba) {
/**
* Crée un message de confirmation
*/
core.confirm = function(text, yesCallback, noCallback) {
var lightbox = lity(function($) {
core.confirm = function (text, yesCallback, noCallback) {
var lightbox = lity(function ($) {
return $("<div>")
.addClass("lightbox")
.append(
@ -72,7 +72,7 @@ core.confirm = function(text, yesCallback, noCallback) {
$("<a>")
.addClass("button grey")
.text("<?php echo helper::translate('Non');?>")
.on("click", function() {
.on("click", function () {
lightbox.options('button', true);
lightbox.close();
if (typeof noCallback !== "undefined") {
@ -82,7 +82,7 @@ core.confirm = function(text, yesCallback, noCallback) {
$("<a>")
.addClass("button")
.text("<?php echo helper::translate('Oui');?>")
.on("click", function() {
.on("click", function () {
lightbox.options('button', true);
lightbox.close();
if (typeof yesCallback !== "undefined") {
@ -94,7 +94,7 @@ core.confirm = function(text, yesCallback, noCallback) {
}(jQuery));
// Callback lors d'un clic sur le fond et sur la croix de fermeture
lightbox.options('button', false);
$(document).on('lity:close', function(event, instance) {
$(document).on('lity:close', function (event, instance) {
if (
instance.options('button') === false &&
typeof noCallback !== "undefined"
@ -103,7 +103,7 @@ core.confirm = function(text, yesCallback, noCallback) {
}
});
// Validation de la lightbox avec le bouton entrée
$(document).on("keyup", function(event) {
$(document).on("keyup", function (event) {
if (event.keyCode === 13) {
lightbox.close();
if (typeof yesCallback !== "undefined") {
@ -117,7 +117,7 @@ core.confirm = function(text, yesCallback, noCallback) {
/**
* Scripts à exécuter en dernier
*/
core.end = function() {
core.end = function () {
/**
* Modifications non enregistrées du formulaire
*/
@ -127,24 +127,24 @@ core.end = function() {
// - Les champs avec data-no-dirty
var inputsDOM = formDOM.find("input:not([data-no-dirty]), select:not([data-no-dirty]), textarea:not(.editorWysiwyg):not([data-no-dirty])");
var inputSerialize = inputsDOM.serialize();
$(window).on("beforeunload", function() {
$(window).on("beforeunload", function () {
if (inputsDOM.serialize() !== inputSerialize) {
message = "<?php echo helper::translate('Les modifications que vous avez apportées ne seront peut-être pas enregistrées.');?>";
return message;
}
});
formDOM.submit(function() {
formDOM.submit(function () {
$(window).off("beforeunload");
});
};
$(function() {
$(function () {
core.end();
});
/**
* Ajoute une notice
*/
core.noticeAdd = function(id, notice) {
core.noticeAdd = function (id, notice) {
$("#" + id + "Notice").text(notice).removeClass("displayNone");
$("#" + id).addClass("notice");
};
@ -152,7 +152,7 @@ core.noticeAdd = function(id, notice) {
/**
* Supprime une notice
*/
core.noticeRemove = function(id) {
core.noticeRemove = function (id) {
$("#" + id + "Notice").text("").addClass("displayNone");
$("#" + id).removeClass("notice");
};
@ -160,18 +160,20 @@ core.noticeRemove = function(id) {
/**
* Scripts à exécuter en premier
*/
core.start = function() {
core.start = function () {
/**
* Remonter en haut au clic sur le bouton
*/
var backToTopDOM = $("#backToTop");
backToTopDOM.on("click", function() {
$("body, html").animate({ scrollTop: 0 }, "400");
backToTopDOM.on("click", function () {
$("body, html").animate({
scrollTop: 0
}, "400");
});
/**
* Affiche / Cache le bouton pour remonter en haut
*/
$(window).on("scroll", function() {
$(window).on("scroll", function () {
if ($(this).scrollTop() > 200) {
backToTopDOM.fadeIn();
} else {
@ -183,15 +185,15 @@ core.start = function() {
*/
var notificationTimer;
$("#notification")
.on("mouseenter", function() {
.on("mouseenter", function () {
clearTimeout(notificationTimer);
$("#notificationProgress")
.stop()
.width("100%");
})
.on("mouseleave", function() {
.on("mouseleave", function () {
// Disparition de la notification
notificationTimer = setTimeout(function() {
notificationTimer = setTimeout(function () {
$("#notification").fadeOut();
}, 3000);
// Barre de progression
@ -200,7 +202,7 @@ core.start = function() {
}, 3000, "linear");
})
.trigger("mouseleave");
$("#notificationClose").on("click", function() {
$("#notificationClose").on("click", function () {
clearTimeout(notificationTimer);
$("#notification").fadeOut();
$("#notificationProgress").stop();
@ -209,7 +211,7 @@ core.start = function() {
/**
* Traitement du formulaire cookies
*/
$("#cookieForm").submit(function(event) {
$("#cookieForm").submit(function (event) {
// Variables des cookies
var getUrl = window.location;
@ -226,7 +228,7 @@ core.start = function() {
/**
* Fermeture de la popup des cookies
*/
$("#cookieConsent .cookieClose").on("click", function() {
$("#cookieConsent .cookieClose").on("click", function () {
$('#cookieConsent').addClass("displayNone");
});
@ -234,7 +236,7 @@ core.start = function() {
* Commande de gestion des cookies dans le footer
*/
$("#footerLinkCookie").on("click", function() {
$("#footerLinkCookie").on("click", function () {
$("#cookieConsent").removeClass("displayNone");
});
@ -242,34 +244,21 @@ core.start = function() {
* Affiche / Cache le menu en mode responsive
*/
var menuDOM = $("#menu");
$("#toggle").on("click", function() {
$("#toggle").on("click", function () {
menuDOM.slideToggle();
});
$(window).on("resize", function() {
$(window).on("resize", function () {
if ($(window).width() > 768) {
menuDOM.css("display", "");
}
});
/**
* Sélection d'une langue du site
*/
$("select#barSelectLanguage").on("change", function() {
var langUrl = $(this).val();
// Récupère la langue sélectionnée dans l'élément 6 d'un tableau
var lang = langUrl.split("/");
// Lit le cookie de langue
var langCookie = getCookie('ZWII_CONTENT');
// Change si différent, corrige le problème avec le thème et le rechargement de la langue.
if (lang[6] !== langCookie) {
$(location).attr("href", langUrl);
}
});
/**
* Choix de page dans la barre de membre
*/
$("#barSelectPage").on("change", function() {
$("#barSelectPage").on("change", function () {
var pageUrl = $(this).val();
if (pageUrl) {
$(location).attr("href", pageUrl);
@ -280,7 +269,7 @@ core.start = function() {
* Champs d'upload de fichiers
*/
// Mise à jour de l'affichage des champs d'upload
$(".inputFileHidden").on("change", function() {
$(".inputFileHidden").on("change", function () {
var inputFileHiddenDOM = $(this);
var fileName = inputFileHiddenDOM.val();
if (fileName === "") {
@ -293,31 +282,31 @@ core.start = function() {
inputFileHiddenDOM.parent().find(".inputFileLabel").text(fileName);
}).trigger("change");
// Suppression du fichier contenu dans le champ
$(".inputFileDelete").on("click", function() {
$(".inputFileDelete").on("click", function () {
$(this).parents(".inputWrapper").find(".inputFileHidden").val("").trigger("change");
});
// Suppression de la date contenu dans le champ
$(".inputDateDelete").on("click", function() {
$(".inputDateDelete").on("click", function () {
$(this).parents(".inputWrapper").find(".datepicker").val("").trigger("change");
});
// Confirmation de mise à jour
$("#barUpdate").on("click", function() {
$("#barUpdate").on("click", function () {
message = "<?php echo helper::translate('Mettre à jour') . ' ?';?>";
return core.confirm(message, function() {
return core.confirm(message, function () {
$(location).attr("href", $("#barUpdate").attr("href"));
});
});
// Confirmation de déconnexion
$("#barLogout").on("click", function() {
$("#barLogout").on("click", function () {
message = "<?php echo helper::translate('Se déconnecter') . '?';?>";
return core.confirm(message, function() {
return core.confirm(message, function () {
$(location).attr("href", $("#barLogout").attr("href"));
});
});
/**
* Bloque la multi-soumission des boutons
*/
$("form").on("submit", function() {
$("form").on("submit", function () {
$(this).find(".uniqueSubmission")
.addClass("disabled")
.prop("disabled", true)
@ -329,7 +318,7 @@ core.start = function() {
/**
* Check adresse email
*/
$("[type=email]").on("change", function() {
$("[type=email]").on("change", function () {
var _this = $(this);
var pattern = /^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([ \t]*\r\n)?[ \t]+)?([\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*(([ \t]*\r\n)?[ \t]+)?")@(([a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.?$/i;
if (pattern.test(_this.val())) {
@ -345,7 +334,7 @@ core.start = function() {
*/
var elementDOM = $("iframe, video, embed, object");
// Calcul du ratio et suppression de la hauteur / largeur des iframes
elementDOM.each(function() {
elementDOM.each(function () {
var _this = $(this);
_this
.data("ratio", _this.height() / _this.width())
@ -353,11 +342,13 @@ core.start = function() {
.removeAttr("width height");
});
// Prend la largeur du parent et détermine la hauteur à l'aide du ratio lors du resize de la fenêtre
$(window).on("resize", function() {
elementDOM.each(function() {
$(window).on("resize", function () {
elementDOM.each(function () {
var _this = $(this);
var width = _this.parent().first().width();
if (width > _this.data("maxwidth")) { width = _this.data("maxwidth"); }
if (width > _this.data("maxwidth")) {
width = _this.data("maxwidth");
}
_this
.width(width)
.height(width * _this.data("ratio"));
@ -367,7 +358,7 @@ core.start = function() {
/*
* Header responsive
*/
$(window).on("resize", function() {
$(window).on("resize", function () {
var responsive = "<?php echo $this->getdata(['theme','header','imageContainer']);?>";
if (responsive === "cover" || responsive === "contain") {
var widthpx = "<?php echo $this->getdata(['theme','site','width']);?>";
@ -391,10 +382,10 @@ core.start();
/**
* Confirmation de suppression
*/
$("#pageDelete").on("click", function() {
$("#pageDelete").on("click", function () {
var _this = $(this);
message = "<?php echo helper::translate('Confirmez-vous la suppression de cette page ?');?>";
return core.confirm(message, function() {
return core.confirm(message, function () {
$(location).attr("href", _this.attr("href"));
});
});
@ -403,7 +394,7 @@ $("#pageDelete").on("click", function() {
/**
* Calcul de la luminance relative d'une couleur
*/
core.relativeLuminanceW3C = function(rgba) {
core.relativeLuminanceW3C = function (rgba) {
// Conversion en sRGB
var RsRGB = rgba[0] / 255;
var GsRGB = rgba[1] / 255;
@ -447,17 +438,25 @@ function capitalizeFirstLetter(string) {
}
$(document).ready(function() {
$(document).ready(function () {
/**
* Affiche le sous-menu quand il est sticky
*/
$("nav").mouseenter(function() {
$("#navfixedlogout .navSub").css({ 'pointer-events': 'auto' });
$("#navfixedconnected .navSub").css({ 'pointer-events': 'auto' });
$("nav").mouseenter(function () {
$("#navfixedlogout .navSub").css({
'pointer-events': 'auto'
});
$("#navfixedconnected .navSub").css({
'pointer-events': 'auto'
});
});
$("nav").mouseleave(function() {
$("#navfixedlogout .navSub").css({ 'pointer-events': 'none' });
$("#navfixedconnected .navSub").css({ 'pointer-events': 'none' });
$("nav").mouseleave(function () {
$("#navfixedlogout .navSub").css({
'pointer-events': 'none'
});
$("#navfixedconnected .navSub").css({
'pointer-events': 'none'
});
});
/**
@ -468,7 +467,7 @@ $(document).ready(function() {
/**
* Effet accordéon
*/
$('.accordion').each(function(e) {
$('.accordion').each(function (e) {
// on stocke l'accordéon dans une variable locale
var accordion = $(this);
// on récupère la valeur data-speed si elle existe
@ -493,7 +492,7 @@ $(document).ready(function() {
open(accordion.find('.active:first'), 0);
// au clic sur un titre...
accordion.on('click', '.accordion-title', function(ev) {
accordion.on('click', '.accordion-title', function (ev) {
ev.preventDefault();
// Masquer l'élément déjà actif
if ($(this).closest('.accordion-item').hasClass('active')) {
@ -508,7 +507,7 @@ $(document).ready(function() {
/**
* Icône du Menu Burger
*/
$("#toggle").click(function() {
$("#toggle").click(function () {
var changeIcon = $('#toggle').children("span");
if ($(changeIcon).hasClass('zwiico-menu')) {
$(changeIcon).removeClass('zwiico-menu').addClass('zwiico-cancel');
@ -520,7 +519,34 @@ $(document).ready(function() {
/**
* Remove ID Facebook from URL
*/
if (/^\?fbclid=/.test(location.search))
if (/^\?fbclid=/.test(location.search)) {
location.replace(location.href.replace(/\?fbclid.+/, ""));
};
/**
* Sélection d'une langue du site
*/
$("select#barSelectLanguage").on("change", function () {
// La langue courante ne déclenche pas de chargement
var langSelected = $(this).val();
var langSelected = langSelected.split("/");
// Lit le cookie de langue
var langCookie = getCookie('ZWII_CONTENT');
// Découpe l'URL pour exclure le changement de page avec le thème
var url = window.location;
var currentUrl = url.href.split("/");
// Change si différent, corrige le problème avec le thème et le rechargement de la langue.
if ((currentUrl !== "?theme" ||
currentUrl !== "theme") &&
langSelected[6] !== langCookie
) {
//$(location).attr("href", langUrl);
var select = document.getElementById("barSelectLanguage");
var selectedOption = select.options[select.selectedIndex];
if (selectedOption.value !== "") {
window.location = selectedOption.value; }
}
});
});

File diff suppressed because it is too large Load Diff

56
core/include/checkup.php Normal file
View File

@ -0,0 +1,56 @@
<?php
/**
* Vérification de la version de PHP
*/
if(version_compare(PHP_VERSION, '7.2.0', '<') ) {
exit('PHP 7.2+ mini requis - PHP 7.2+ mini required');
}
if ( version_compare(PHP_VERSION, '8.2.999', '>') ) {
exit('PHP 8.2 pas encore supporté, installez PHP 7.n ou PHP 8.1.n - PHP 8.2 not yet supported, install PHP 7.n or PHP 8.1.n');
}
/**
* Check les modules installés
*/
$e = [
'gd',
'json',
'date',
'mbstring',
'zip',
'intl',
'exif',
'Phar',
'fileinfo',
'session'
];
$m = get_loaded_extensions();
$b = false;
foreach ($e as $k => $v) {
if (array_search($v,$m) === false) {
$b = true;
echo '<pre><p>Module ' . $v . ' manquant - Module ' . $v . ' missing.</p></pre>';
}
}
if ($b)
exit('<pre><p>ZwiiCMS ne peut pas démarrer ; activez les extensions requises - ZwiiCMS cannot start, enabled missing extensions.</p></pre>');
/**
* Contrôle les htacess
*/
$d = [
'',
'site/data/',
'site/backup/',
'site/tmp/',
'site/i18n/'
];
foreach ($d as $key) {
if (file_exists($key . '.htaccess') === false)
exit('<pre>ZwiiCMS ne peut pas démarrer, le fichier ' .$key . '.htaccess est manquant.<br />ZwiiCMS cannot start, file ' . $key . '.htaccess is missing manquant.</pre>' );
}

View File

@ -0,0 +1,30 @@
<?php
/**
* Mise à jour avant v12
* */
if (file_exists('site/data/core.json')) {
$version = json_decode(file_get_contents('site/data/core.json'), true);
// Avant version 12.0.00
if ($version['core']['dataVersion'] < 12000) {
// Correspondance pour les dossiers de langue à convertir
$languages = [
'fr' => 'fr_FR',
'en' => 'en_EN',
'pt' => 'pt_PT'
];
// Convertit les dossiers vers la nouvelle structure
foreach ($languages as $key => $value) {
if (
is_dir('site/data/' . $key) &&
!is_dir('site/data/' . $value)
) {
$end = rename('site/data/' . $key, 'site/data/' . $value);
}
}
sleep(1);
}
}

View File

@ -26,7 +26,7 @@ if ($this->getData(['core', 'dataVersion']) < 10000) {
//La page a une galerie
if ($this->getData(['page', $parent, 'moduleId']) === 'gallery') {
// Parcourir les dossiers de la galerie
$tempData = $this->getData(['module', $parent]);
$tempData = $this->getData(['module', $parent]);
$i = 1;
foreach ($tempData as $galleryKey => $galleryItem) {
// Ordre de tri des galeries
@ -58,7 +58,7 @@ if ($this->getData(['core', 'dataVersion']) < 10000) {
}
}
// Contrôle des options php.ini pour la mise à jour auto
if (helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version') === false) {
if (helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version') === false) {
$this->setData(['config', 'autoUpdate', false]);
}
@ -71,7 +71,8 @@ if ($this->getData(['core', 'dataVersion']) < 10092) {
$dir = getcwd();
chdir('core/vendor/fullpage');
$files = glob('*');
foreach ($files as $file) unlink($file);
foreach ($files as $file)
unlink($file);
chdir($dir);
rmdir('core/vendor/fullpage/');
}
@ -163,7 +164,8 @@ if ($this->getData(['core', 'dataVersion']) < 10300) {
$dir = getcwd();
chdir('core/module/search');
$files = glob('*');
foreach ($files as $file) unlink($file);
foreach ($files as $file)
unlink($file);
chdir($dir);
rmdir('core/module/search/');
}
@ -173,8 +175,7 @@ if ($this->getData(['core', 'dataVersion']) < 10300) {
$this->setData(['config', 'searchPageId', '']);
// Mettre à jour les données des galeries
$pageList = array();
foreach ($this->getHierarchy(null, null, null) as $parentKey => $parentValue) {
$pageList = array(); foreach ($this->getHierarchy(null, null, null) as $parentKey => $parentValue) {
$pageList[] = $parentKey;
foreach ($parentValue as $childKey) {
$pageList[] = $childKey;
@ -307,22 +308,22 @@ if ($this->getData(['core', 'dataVersion']) < 10400) {
$articleIds = array_keys(helper::arrayColumn($this->getData(['module', $parent, 'posts']), 'publishedOn', 'SORT_DESC'));
foreach ($articleIds as $key => $article) {
// Droits les deux groupes
$this->setData(['module', $parent, 'posts', $article, 'editConsent', 3]);
$this->setData(['module', $parent, 'posts', $article, 'editConsent', 3]);
// Limite de taille 500
$this->setData(['module', $parent, 'posts', $article, 'commentMaxlength', '500']);
$this->setData(['module', $parent, 'posts', $article, 'commentMaxlength', '500']);
// Pas d'approbation des commentaires
$this->setData(['module', $parent, 'posts', $article, 'commentApproved', false]);
$this->setData(['module', $parent, 'posts', $article, 'commentApproved', false]);
// pas de notification
$this->setData(['module', $parent, 'posts', $article, 'commentNotification', false]);
$this->setData(['module', $parent, 'posts', $article, 'commentNotification', false]);
// groupe de notification
$this->setData(['module', $parent, 'posts', $article, 'commentGroupNotification', 3]);
$this->setData(['module', $parent, 'posts', $article, 'commentGroupNotification', 3]);
}
// Traitement des commentaires
if (is_array($this->getData(['module', $parent, 'posts', $article, 'comment']))) {
foreach ($this->getData(['module', $parent, 'posts', $article, 'comment']) as $commentId => $comment) {
if (is_array($this->getData(['module', $parent, 'posts', $article, 'comment']))) {
foreach ($this->getData(['module', $parent, 'posts', $article, 'comment']) as $commentId => $comment) {
// Approbation
$this->setData(['module', $parent, 'posts', $article, 'comment', $commentId, 'approval', true]);
$this->setData(['module', $parent, 'posts', $article, 'comment', $commentId, 'approval', true]);
}
}
}
@ -430,7 +431,8 @@ if ($this->getData(['core', 'dataVersion']) < 11000) {
$this->setData(['config', 'i18n', 'pt', 'none']);
// Supprimer les fichiers de backup
if (file_exists('site/data/.backup')) unlink('site/data/.backup');
if (file_exists('site/data/.backup'))
unlink('site/data/.backup');
$path = realpath('site/data');
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename) {
if (strpos($filename, 'backup.json')) {
@ -541,10 +543,10 @@ if ($this->getData(['core', 'dataVersion']) < 11200) {
if ($this->getData(['core', 'dataVersion']) < 11202) {
// Renommer les champs
$this->setData(['locale', 'cookies', 'mainLabel', $this->getData(['locale', 'cookies', 'cookiesZwiiText'])]);
$this->setData(['locale', 'cookies', 'gaLabel', $this->getData(['locale', 'cookies', 'cookiesGaText'])]);
$this->setData(['locale', 'cookies', 'titleLabel', $this->getData(['locale', 'cookies', 'cookiesTitleText'])]);
$this->setData(['locale', 'cookies', 'linkLegalLabel', $this->getData(['locale', 'cookies', 'cookiesLinkMlText'])]);
$this->setData(['locale', 'cookies', 'mainLabel', $this->getData(['locale', 'cookies', 'cookiesZwiiText'])]);
$this->setData(['locale', 'cookies', 'gaLabel', $this->getData(['locale', 'cookies', 'cookiesGaText'])]);
$this->setData(['locale', 'cookies', 'titleLabel', $this->getData(['locale', 'cookies', 'cookiesTitleText'])]);
$this->setData(['locale', 'cookies', 'linkLegalLabel', $this->getData(['locale', 'cookies', 'cookiesLinkMlText'])]);
$this->setData(['locale', 'cookies', 'checkboxGaLabel', $this->getData(['locale', 'cookies', 'cookiesCheckboxGaText'])]);
$this->setData(['locale', 'cookies', 'buttonValidLabel', $this->getData(['locale', 'cookies', 'cookiesButtonText'])]);
// Effacer les anciens champs
@ -570,23 +572,23 @@ if ($this->getData(['core', 'dataVersion']) < 11203) {
foreach ($this->getHierarchy(null, null, null) as $parentId => $childIds) {
$content = $this->getPage($parentId, self::$i18nContent);
$titre = $this->getData(['page', $parentId, 'title']);
$content = $titre . ' ' . $content;
$content = $titre . ' ' . $content;
$replace = str_replace('href="' . $old, 'href="' . $new, stripslashes($content), $c1);
$replace = str_replace('src="' . $old, 'src="' . $new, stripslashes($replace), $c2);
if ($c1 > 0 || $c2 > 0) {
$success = true;
$this->setPage($parentId, $replace, self::$i18nContent);
$this->setPage($parentId, $replace, self::$i18nContent);
$c3 += $c1 + $c2;
}
foreach ($childIds as $childId) {
$content = $this->getPage($childId, self::$i18nContent);
$content = $titre . ' ' . $content;
$content = $titre . ' ' . $content;
$replace = str_replace('href="' . $old, 'href="' . $new, stripslashes($content), $c1);
$replace = str_replace('src="' . $old, 'src="' . $new, stripslashes($replace), $c2);
if ($c1 > 0 || $c2 > 0) {
$success = true;
$this->setPage($childId, $replace, self::$i18nContent);
$this->setPage($childId, $replace, self::$i18nContent);
$c3 += $c1 + $c2;
}
}
@ -646,11 +648,11 @@ if ($this->getData(['core', 'dataVersion']) < 11300) {
$this->setData(['theme', 'footer', 'font', $fonts[$this->getData(['theme', 'footer', 'font'])]]);
$this->setData(['theme', 'header', 'font', $fonts[$this->getData(['theme', 'header', 'font'])]]);
$this->setData(['theme', 'menu', 'font', $fonts[$this->getData(['theme', 'menu', 'font'])]]);
$this->setData(['theme', 'text', 'font', $fonts[$this->getData(['theme', 'text', 'font'])]]);
$this->setData(['theme', 'title', 'font', $fonts[$this->getData(['theme', 'title', 'font'])]]);
$this->setData(['admin', 'fontTitle', $fonts[$this->getData(['admin', 'fontTitle'])]]);
$this->setData(['admin', 'fontText', $fonts[$this->getData(['admin', 'fontText'])]]);
$this->setData(['theme', 'menu', 'font', $fonts[$this->getData(['theme', 'menu', 'font'])]]);
$this->setData(['theme', 'text', 'font', $fonts[$this->getData(['theme', 'text', 'font'])]]);
$this->setData(['theme', 'title', 'font', $fonts[$this->getData(['theme', 'title', 'font'])]]);
$this->setData(['admin', 'fontTitle', $fonts[$this->getData(['admin', 'fontTitle'])]]);
$this->setData(['admin', 'fontText', $fonts[$this->getData(['admin', 'fontText'])]]);
unlink(self::DATA_DIR . 'admin.css');
unlink(self::DATA_DIR . 'theme.css');
@ -714,12 +716,12 @@ if ($this->getData(['core', 'dataVersion']) < 11400) {
],
'droid-sans-2' => [
'name' => 'Droid Sans',
'font-family' => '\'Droid Sans\', sans-serif',
'font-family' => '\'Droid Sans\', sans-serif',
'resource' => 'https://fonts.cdnfonts.com/css/droid-sans-2'
],
'droid-serif-2' => [
'name' => 'Droid Serif',
'font-family' => '\'Droid Serif\', serif',
'font-family' => '\'Droid Serif\', serif',
'resource' => 'https://fonts.cdnfonts.com/css/droid-serif-2'
],
'indie-flower' => [
@ -802,11 +804,16 @@ if ($this->getData(['core', 'dataVersion']) < 11400) {
gettype($fontName) === 'string'
&& file_exists(self::DATA_DIR . 'fonts/' . $fontName)
) {
$this->setData(['fonts', 'files', $fontId, [
'name' => ucfirst($fontId),
'font-family' => '\'' . ucfirst($fontId) . '\', sans-serif',
'resource' => $fontName
]]);
$this->setData([
'fonts',
'files',
$fontId,
[
'name' => ucfirst($fontId),
'font-family' => '\'' . ucfirst($fontId) . '\', sans-serif',
'resource' => $fontName
]
]);
}
}
}
@ -816,11 +823,16 @@ if ($this->getData(['core', 'dataVersion']) < 11400) {
if (is_array($imported)) {
foreach ($imported as $fontId => $fontUrl) {
if (gettype($fontUrl) === 'string') {
$this->setData(['fonts', 'imported', $fontId, [
'name' => ucfirst($fontId),
'font-family' => '\'' . ucfirst($fontId) . '\', sans-serif',
'resource' => 'https:\\fonts.cdnfonts.com\css' . $fontUrl
]]);
$this->setData([
'fonts',
'imported',
$fontId,
[
'name' => ucfirst($fontId),
'font-family' => '\'' . ucfirst($fontId) . '\', sans-serif',
'resource' => 'https:\\fonts.cdnfonts.com\css' . $fontUrl
]
]);
}
}
}
@ -879,8 +891,8 @@ if ($this->getData(['core', 'dataVersion']) < 12000) {
helper::deleteCookie('ZWII_CONTENTSCRIPT');
// Nettoyage de fichiers inutiles
if (file_exists('core\module\user\view\import\import.help.html')) {
unlink('core\module\user\view\import\import.help.html');
if (file_exists('core/module/user/view/import/import.help.html')) {
unlink('core/module/user/view/import/import.help.html');
}
// Supprimer les fichier associés
@ -914,3 +926,22 @@ if ($this->getData(['core', 'dataVersion']) < 12000) {
// Mise à jour
$this->setData(['core', 'dataVersion', 12000]);
}
// Version 12.3.01
if ($this->getData(['core', 'dataVersion']) < 12301) {
// Valeur par défaut du délai de recherche de mise à jour en ligne
$this->setData(['config', 'autoUpdateDelay', 86400]);
// Nettoyage de flatPickr
if (is_dir('core/vendor/flatpickr')) {
$this->removeDir('core/vendor/flatpickr');
}
// email reply
$this->deleteData(['config', 'smtp', 'sender']);
$this->setData(['config', 'smtp', 'from', 'no-reply@' . str_replace('www.', '', $_SERVER['HTTP_HOST'])]);
// Mise à jour
$this->setData(['core', 'dataVersion', 12301]);
}

View File

@ -1,22 +1,24 @@
<!DOCTYPE html>
<html prefix="og: http://ogp.me/ns#" lang="<?php echo self::$i18nContent;?>">
<html prefix="og: http://ogp.me/ns#" lang="<?php echo substr(self::$i18nContent, 0, 2); ?>">
<head>
<meta charset="UTF-8">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<?php $this->showMetaTitle(); ?>
<?php $this->showMetaDescription(); ?>
<?php $this->showMetaType(); ?>
<?php $this->showMetaImage(); ?>
<?php $this->showFavicon(); ?>
<?php $this->showVendor(); ?>
<?php $this->showStyle(); ?>
<?php $layout->showMetaTitle(); ?>
<?php $layout->showMetaDescription(); ?>
<?php $layout->showMetaType(); ?>
<?php $layout->showMetaImage(); ?>
<?php $layout->showFavicon(); ?>
<?php $layout->showVendor(); ?>
<?php $layout->showStyle(); ?>
<?php $layout->showFonts(); ?>
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/common.css">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/blank.css">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>theme.css?<?php echo md5_file(self::DATA_DIR.'theme.css'); ?>">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>custom.css?<?php echo md5_file(self::DATA_DIR.'custom.css'); ?>">
</head>
<body>
<?php $this->showContent(); ?>
<?php $this->showScript(); ?>
<?php $layout->showContent(); ?>
<?php $layout->showScript(); ?>
</body>
</html>

View File

@ -217,7 +217,7 @@ Signature dans les articles blog et news
.table tbody tr {
background: #F6F7F8;
transition: background .3s ease-out;
transition: background-color .3s ease-out;
}
.table tbody tr:nth-child(2n + 2) {
@ -418,7 +418,7 @@ td>.col12 {
display: inline-block;
padding: 0 12px;
color: #FFF;
transition: background .3s ease-out;
transition: background-color .3s ease-out;
}
#bar a:hover {
@ -617,7 +617,7 @@ nav li:hover ul {
nav a {
display: inherit;
transition: background .3s ease-out;
transition: background-color .3s ease-out;
}
nav a:hover {
@ -892,7 +892,7 @@ footer #footerSocials span {
margin: 0 5px;
display: inline-block;
border-radius: 2px;
transition: background .3s ease-out;
transition: background-color .3s ease-out;
}
footer #footerSocials .zwiico-facebook {
@ -973,7 +973,7 @@ footer #footerSocials .zwiico-github:hover {
margin: 16px auto;
text-align: left;
border-radius: 2px;
transition: background .3s ease-out;
transition: background-color .3s ease-out;
}
.speechBubble:before {
@ -1001,7 +1001,7 @@ footer #footerSocials .zwiico-github:hover {
cursor: pointer;
display: none;
border-radius: 50%;
transition: background .3s ease-out;
transition: background-color .3s ease-out;
}
#backToTop:hover {
@ -1041,7 +1041,7 @@ footer #footerSocials .zwiico-github:hover {
margin-left: 10px;
padding: 4px 8px;
display: inline-block;
transition: background .3s ease-out;
transition: background-color .3s ease-out;
}
#cookieConsentConfirm:hover {
@ -1134,6 +1134,11 @@ footer #footerSocials .zwiico-github:hover {
input[type='email'],
input[type='text'],
input[type='password'],
input[type='date'],
input[type='datetime-local'],
input[type='time'],
input[type='month'],
input[type='week'],
.inputFile,
select,
textarea {
@ -1154,6 +1159,11 @@ select {
input[type='email']:hover,
input[type='text']:hover,
input[type='password']:hover,
input[type='date']:hover,
input[type='datetime-local']:hover,
input[type='time']:hover,
input[type='month']:hover,
input[type='week']:hover,
.inputFile:hover,
select:hover,
textarea:hover {
@ -1163,6 +1173,11 @@ textarea:hover {
input[type='email'].notice,
input[type='text'].notice,
input[type='password'].notice,
input[type='date'].notice,
input[type='datetime-local'].notice,
input[type='time'].notice,
input[type='month'].notice,
input[type='week'].notice,
.inputFile.notice,
select.notice,
textarea.notice {
@ -1172,7 +1187,12 @@ textarea.notice {
input[type='email'].notice:hover,
input[type='text'].notice:hover,
input[type='password'].notice:hover,
input[type='password'].notice:hover
input[type='date'].notice:hover,
input[type='datetime-local'].notice:hover,
input[type='time'].notice:hover,
input[type='month'].notice:hover,
input[type='week'].notice:hover,
.inputFile.notice:hover,
select.notice:hover,
textarea.notice:hover {
@ -1199,7 +1219,7 @@ button {
cursor: pointer;
font-family: inherit;
border-radius: 2px;
transition: background .3s ease-out;
transition: background-color .3s ease-out;
}
textarea {
@ -1244,7 +1264,7 @@ label {
user-select: none;
cursor: pointer;
border-radius: 2px;
transition: background .3s ease-out;
transition: background-color .3s ease-out;
}
@ -1269,15 +1289,20 @@ label {
/* Upload de fichiers */
.inputFile,
.datepicker {
.inputFile {
margin: 0;
display: inline-block;
width: 88% !important;
}
/*
.datepicker {
margin: 0;
display: inline-block;
width: 100% !important;
}
*/
.inputFileDelete,
.inputDateDelete {
.inputFileDelete {
display: block;
width: 10%;
padding: 10px 0;
@ -1294,13 +1319,11 @@ label {
/* Empêche le débordement et les sauts de ligne */
.inputFileManagerWrapper,
.inputDateManagerWrapper {
.inputFileManagerWrapper {
display: inline;
}
.inputFileManagerWrapper>.inputFile,
.inputDateManagerWrapper>.inputFile {
.inputFileManagerWrapper>.inputFile {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;

View File

@ -1,25 +1,27 @@
<!DOCTYPE html>
<html prefix="og: http://ogp.me/ns#" lang="<?php echo self::$i18nContent;?>">
<html prefix="og: http://ogp.me/ns#" lang="<?php echo substr(self::$i18nContent, 0, 2); ?>">
<head>
<meta charset="UTF-8">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<?php $this->showMetaTitle(); ?>
<?php $this->showMetaDescription(); ?>
<?php $this->showMetaType(); ?>
<?php $this->showMetaImage(); ?>
<?php $this->showFavicon(); ?>
<?php $this->showVendor(); ?>
<?php $this->showStyle(); ?>
<?php $layout->showMetaTitle(); ?>
<?php $layout->showMetaDescription(); ?>
<?php $layout->showMetaType(); ?>
<?php $layout->showMetaImage(); ?>
<?php $layout->showFavicon(); ?>
<?php $layout->showVendor(); ?>
<?php $layout->showStyle(); ?>
<?php $layout->showFonts(); ?>
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/common.css">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/light.css">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>theme.css?<?php echo md5_file(self::DATA_DIR.'theme.css'); ?>">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>custom.css?<?php echo md5_file(self::DATA_DIR.'custom.css'); ?>">
</head>
<body>
<?php $this->showNotification(); ?>
<?php $layout->showNotification(); ?>
<div id="site" class="container light">
<section><?php $this->showContent(); ?></section>
<section><?php $layout->showContent(); ?></section>
</div>
<?php $this->showScript(); ?>
<?php $layout->showScript(); ?>
</body>
</html>

View File

@ -1,7 +1,8 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<html xmlns="http://www.w3.org/1999/xhtml" lang="<?php echo substr(self::$i18nContent, 0, 2);?>">
<head>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="x-apple-disable-message-reformatting">

View File

@ -1,15 +1,18 @@
<!DOCTYPE html>
<html prefix="og: http://ogp.me/ns#" lang="<?php echo self::$i18nContent; ?>">
<html prefix="og: http://ogp.me/ns#" lang="<?php echo substr(self::$i18nContent, 0, 2); ?>">
<head>
<meta charset="UTF-8">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta meta="description=" content="ZwiiCMS le CMS multilingue sans base de données">
<meta name="generator" content="ZiiCMS https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS">
<meta name="viewport" content="width=device-width, initial-scale=1">
<?php $this->showMetaTitle(); ?>
<?php $this->showMetaDescription(); ?>
<?php $this->showMetaType(); ?>
<?php $this->showMetaImage(); ?>
<?php $this->showFavicon(); ?>
<?php $this->showVendor(); ?>
<?php $layout->showMetaTitle(); ?>
<?php $layout->showMetaDescription(); ?>
<?php $layout->showMetaType(); ?>
<?php $layout->showMetaImage(); ?>
<?php $layout->showFavicon(); ?>
<?php $layout->showVendor(); ?>
<?php $layout->showFonts(); ?>
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/common.css?<?php echo md5_file('core/layout/common.css'); ?>">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>theme.css?<?php echo md5_file(self::DATA_DIR . 'theme.css'); ?>">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>custom.css?<?php echo md5_file(self::DATA_DIR . 'custom.css'); ?>">
@ -21,7 +24,8 @@
) : ?>
<link rel="alternate" type="application/rss+xml" href="'<?php echo helper::baseUrl() . $this->getUrl(0) . '/rss'; ?>" title="fLUX rss">
<?php endif; ?>
<?php $this->showStyle(); ?>
<?php $layout->showStyle(); ?>
<?php $layout->showInlineStyle(); ?>
<!-- Script perso dans le header -->
<?php if (file_exists(self::DATA_DIR . 'head.inc.html')) {
include(self::DATA_DIR . 'head.inc.html');
@ -31,11 +35,11 @@
<body>
<!-- Barre d'administration -->
<?php if ($this->getUser('group') > self::GROUP_MEMBER) : ?>
<?php $this->showBar(); ?>
<?php $layout->showBar(); ?>
<?php endif; ?>
<!-- Notifications -->
<?php $this->showNotification(); ?>
<?php $layout->showNotification(); ?>
<!-- Menu dans le fond du site avant la bannière -->
<?php if ($this->getData(['theme', 'menu', 'position']) === 'body-first' || $this->getData(['theme', 'menu', 'position']) === 'top') : ?>
@ -63,7 +67,7 @@
$menuClass = $this->getData(['theme', 'menu', 'wide']) === 'none' ? 'class="container-large"' : 'class="container"';
?>
<div id="menu" <?php echo $menuClass; ?>>
<?php $this->showMenu(); ?>
<?php $layout->showMenu(); ?>
</div> <!--fin menu -->
</nav>
<?php endif; ?>
@ -109,7 +113,7 @@
$menuClass = $this->getData(['theme', 'menu', 'wide']) === 'none' ? 'class="container-large"' : 'class="container"';
?>
<div id="menu" <?php echo $menuClass; ?>>
<?php $this->showMenu(); ?></div>
<?php $layout->showMenu(); ?></div>
</nav>
<?php endif; ?>
@ -122,7 +126,7 @@
<?php echo $this->getData(['theme', 'menu', 'burgerContent']) === 'title' ? '<div id="burgerText">' . $this->getData(['locale', 'title']) . '</div>' : ''; ?>
<?php echo $this->getData(['theme', 'menu', 'burgerContent']) === 'logo' ? '<div id="burgerLogo"><img src="' . helper::baseUrl(false) . self::FILE_DIR . 'source/' . $this->getData(['theme', 'menu', 'burgerLogo']) . '"></div>' : ''; ?>
<?php echo template::ico('menu', ['fontSize' => '2em']); ?></div>
<div id="menu" class="container"><?php $this->showMenu(); ?></div>
<div id="menu" class="container"><?php $layout->showMenu(); ?></div>
</nav>
<?php endif; ?>
<?php if (
@ -171,15 +175,15 @@
<?php echo $this->getData(['theme', 'menu', 'burgerContent']) === 'title' ? '<div id="burgerText">' . $this->getData(['locale', 'title']) . '</div>' : ''; ?>
<?php echo $this->getData(['theme', 'menu', 'burgerContent']) === 'logo' ? '<div id="burgerLogo"><img src="' . helper::baseUrl(false) . self::FILE_DIR . 'source/' . $this->getData(['theme', 'menu', 'burgerLogo']) . '"></div>' : ''; ?>
<?php echo template::ico('menu', ['fontSize' => '2em']); ?></div>
<div id="menu" class="container"><?php $this->showMenu(); ?></div>
<div id="menu" class="container"><?php $layout->showMenu(); ?></div>
</nav>
<?php endif; ?>
<!-- Corps de page -->
<?php $this->showSection(); ?>
<?php $layout->showSection(); ?>
<!-- footer -->
<?php $this->showFooter(); ?>
<?php $layout->showFooter(); ?>
<!-- Fin du site -->
<?php echo $this->getData(['theme', 'footer', 'position']) === 'site' ? '</div>' : ''; ?>
@ -187,9 +191,9 @@
<!-- Lien remonter en haut -->
<div id="backToTop"><?php echo template::ico('up'); ?></div>
<!-- Affichage du consentement aux cookies-->
<?php $this->showCookies(); ?>
<?php $layout->showCookies(); ?>
<!-- Les scripts -->
<?php $this->showScript(); ?>
<?php $layout->showScript(); ?>
<!-- Script perso dans body -->
<?php if (file_exists(self::DATA_DIR . 'body.inc.html')) {
include(self::DATA_DIR . 'body.inc.html');

View File

@ -189,6 +189,13 @@ class config extends common
'num' => 'Chiffres',
'alpha' => 'Lettres'
];
public static $updateDelay = [
86400 => '1',
172800 => '2',
345600 => '4',
604800 => '7',
1209600 => '14',
];
// Langue traduite courante
public static $i18nSite = 'fr_FR';
@ -420,7 +427,6 @@ class config extends common
$this->setData(['core', 'lastAutoUpdate', 0]);
}
// Sauvegarder la configuration
$this->setData([
'config',
@ -436,6 +442,7 @@ class config extends common
'proxyType' => $this->getInput('configProxyType'),
'proxyUrl' => $this->getInput('configProxyUrl'),
'proxyPort' => $this->getInput('configProxyPort', helper::FILTER_INT),
'autoUpdateDelay' => $this->getInput('configAutoUpdateDelay', helper::FILTER_INT),
'social' => [
'facebookId' => $this->getInput('socialFacebookId'),
'linkedinId' => $this->getInput('socialLinkedinId'),
@ -451,10 +458,10 @@ class config extends common
'host' => $this->getInput('smtpHost', helper::FILTER_STRING_SHORT, $this->getInput('smtpEnable', helper::FILTER_BOOLEAN)),
'port' => $this->getInput('smtpPort', helper::FILTER_INT, $this->getInput('smtpEnable', helper::FILTER_BOOLEAN)),
'auth' => $this->getInput('smtpAuth', helper::FILTER_BOOLEAN),
'secure' => $this->getInput('smtpSecure', helper::FILTER_BOOLEAN),
'secure' => $this->getInput('smtpSecure', helper::FILTER_STRING_SHORT),
'username' => $this->getInput('smtpUsername', helper::FILTER_STRING_SHORT, $this->getInput('smtpAuth', helper::FILTER_BOOLEAN)),
'password' => helper::encrypt($this->getData(['config', 'smtp', 'username']), $this->getInput('smtpPassword', null, $this->getInput('smtpAuth', helper::FILTER_BOOLEAN))),
'sender' => $this->getInput('smtpSender', helper::FILTER_MAIL)
'from' => $this->getInput('smtpFrom', helper::FILTER_MAIL, true),
],
'seo' => [
'robots' => $this->getInput('seoRobots', helper::FILTER_BOOLEAN),
@ -543,12 +550,30 @@ class config extends common
]);
}
// Activation du bouton de mise à jour
if (
helper::checkNewVersion(common::ZWII_UPDATE_CHANNEL)
&& $this->getData(['core', 'updateAvailable']) === false
&& $this->getData(['config', 'autoUpdate'])
) {
$this->setData(['core', 'updateAvailable', true]);
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'config',
]);
}
// Variable de version
self::$onlineVersion = helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version');
if (self::$onlineVersion > common::ZWII_VERSION) {
if (helper::checkNewVersion(common::ZWII_UPDATE_CHANNEL)) {
self::$updateButtonText = helper::translate('Mettre à jour');
}
// Sélecteur de délais, compléter avec la traduction en jours
foreach(self::$updateDelay as $key => $value) {
self::$updateDelay[$key] = $key === 86400 ? $value . ' ' . helper::translate('jour') : $value . ' ' . helper::translate('jours');
}
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Configuration'),

View File

@ -2,7 +2,8 @@
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Paramètres'); ?>
<h4>
<?php echo helper::translate('Paramètres'); ?>
<!--<span id="specialeHelpButton" class="helpDisplayButton">
<a href="https://doc.zwiicms.fr/reseau" target="_blank" title="Cliquer pour consulter l'aide en ligne">
<?php //echo template::ico('help', ['margin' => 'left']); ?>
@ -37,7 +38,8 @@
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('SMTP'); ?>
<h4>
<?php echo helper::translate('SMTP'); ?>
<!--<span id="specialeHelpButton" class="helpDisplayButton">
<a href="https://doc.zwiicms.fr/smtp" target="_blank" title="Cliquer pour consulter l'aide en ligne">
<?php //echo template::ico('help', ['margin' => 'left']); ?>
@ -45,61 +47,69 @@
</span>-->
</h4>
<div class="row">
<div class="col12">
<?php echo template::checkbox('smtpEnable', true, 'Activer SMTP', [
'checked' => $this->getData(['config', 'smtp', 'enable']),
'help' => 'Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d\'envoi de mail.'
<div class="col6">
<?php echo template::text('smtpFrom', [
'label' => 'Expéditeur',
'placeholder' => 'no-reply@host',
'value' => $this->getData(['config', 'smtp', 'from']),
]); ?>
</div>
</div>
<div id="smtpParam">
<div class="row">
<div class="col8">
<?php echo template::text('smtpHost', [
'label' => 'Adresse SMTP',
'placeholder' => 'smtp.fr',
'value' => $this->getData(['config', 'smtp', 'host'])
]); ?>
</div>
<div class="col2">
<?php echo template::text('smtpPort', [
'label' => 'Port SMTP',
'placeholder' => '589',
'value' => $this->getData(['config', 'smtp', 'port'])
]); ?>
</div>
<div class="col2">
<?php echo template::select('smtpAuth', $module::$SMTPauth, [
'label' => 'Authentification',
'selected' => $this->getData(['config', 'smtp', 'auth'])
<div class="col12">
<?php echo template::checkbox('smtpEnable', true, 'SMTP personnalisé', [
'checked' => $this->getData(['config', 'smtp', 'enable']),
'help' => 'Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d\'envoi de mail.'
]); ?>
</div>
</div>
<div id="smtpAuthParam">
<div id="smtpParam">
<div class="row">
<div class="col5">
<?php echo template::text('smtpUsername', [
'label' => 'Nom utilisateur',
'value' => $this->getData(['config', 'smtp', 'username'])
]); ?>
</div>
<div class="col5">
<?php echo template::password('smtpPassword', [
'label' => 'Mot de passe',
'autocomplete' => 'off',
'value' => $this->getData(['config', 'smtp', 'username']) ? helper::decrypt($this->getData(['config', 'smtp', 'username']), $this->getData(['config', 'smtp', 'password'])) : ''
<div class="col8">
<?php echo template::text('smtpHost', [
'label' => 'Adresse SMTP',
'placeholder' => 'smtp.fr',
'value' => $this->getData(['config', 'smtp', 'host'])
]); ?>
</div>
<div class="col2">
<?php echo template::select('smtpSecure', $module::$SMTPEnc, [
'label' => 'Sécurité',
'selected' => $this->getData(['config', 'smtp', 'secure'])
<?php echo template::text('smtpPort', [
'label' => 'Port SMTP',
'placeholder' => '589',
'value' => $this->getData(['config', 'smtp', 'port'])
]); ?>
</div>
<div class="col2">
<?php echo template::select('smtpAuth', $module::$SMTPauth, [
'label' => 'Authentification',
'selected' => $this->getData(['config', 'smtp', 'auth'])
]); ?>
</div>
</div>
<div id="smtpAuthParam">
<div class="row">
<div class="col5">
<?php echo template::text('smtpUsername', [
'label' => 'Nom utilisateur',
'value' => $this->getData(['config', 'smtp', 'username'])
]); ?>
</div>
<div class="col5">
<?php echo template::password('smtpPassword', [
'label' => 'Mot de passe',
'autocomplete' => 'off',
'value' => $this->getData(['config', 'smtp', 'password'])
]); ?>
</div>
<div class="col2">
<?php echo template::select('smtpSecure', $module::$SMTPEnc, [
'label' => 'Sécurité',
'selected' => $this->getData(['config', 'smtp', 'secure'])
]); ?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -1,11 +1,10 @@
<?php echo template::formOpen('configRestoreForm'); ?>
<div class="row">
<div class="col2">
<div class="col1">
<?php echo template::button('configRestoreBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'config',
'ico' => 'left',
'value' => 'Retour'
'value' => template::ico('left')
]); ?>
</div>
<div class="col2 offset8">

View File

@ -1,11 +1,10 @@
<?php echo template::formOpen('configScript'); ?>
<div class="row">
<div class="col2">
<div class="col1">
<?php echo template::button('configManageBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'config',
'ico' => 'left',
'value' => 'Retour'
'value' => template::ico('left')
]); ?>
</div>
<div class="col2 offset8">

View File

@ -71,29 +71,34 @@
<?php echo template::checkbox('configAutoUpdate', true, 'Rechercher une mise à jour en ligne', [
'checked' => $this->getData(['config', 'autoUpdate']),
'help' => 'La vérification est quotidienne. Option désactivée si la configuration du serveur ne le permet pas.',
'disabled' => !$module::$onlineVersion
'disabled' => empty(helper::getOnlineVersion(common::ZWII_UPDATE_CHANNEL))
]); ?>
</div>
<div class="col6">
<?php echo template::checkbox('configAutoUpdateHtaccess', true, 'Préserver le fichier htaccess racine', [
'checked' => $this->getData(['config', 'autoUpdateHtaccess']),
'help' => 'Lors d\'une mise à jour automatique, conserve le fichier htaccess de la racine du site.',
'disabled' => !$module::$onlineVersion
'disabled' => empty(helper::getOnlineVersion(common::ZWII_UPDATE_CHANNEL))
]); ?>
</div>
</div>
<div class="row">
<div class="col6">
<?php echo '<pre>Version installée : <strong>' . common::ZWII_VERSION . '</strong></pre>'; ?>
<?php echo $module::$onlineVersion ? '<pre>Version en ligne : <strong>' . $module::$onlineVersion . '</strong></pre>' : ''; ?>
<div class="col3">
<?php echo template::select('configAutoUpdateDelay', $module::$updateDelay, [
'label' => 'Fréquence de recherche',
'selected' => $this->getData(['config', 'autoUpdateDelay']),
]); ?>
</div>
<div class="col4 verticalAlignBottom">
<div class="col3 offset2 verticalAlignBottom">
<pre>Version installée : <strong><?php echo common::ZWII_VERSION ; ?></strong></pre>
<pre>Version en ligne : <strong><?php echo helper::getOnlineVersion(common::ZWII_UPDATE_CHANNEL) ; ?></strong></pre>
</div>
<div class="col3 verticalAlignBottom">
<?php echo template::button('configUpdateForced', [
'ico' => 'download-cloud',
'href' => helper::baseUrl() . 'install/update',
'value' => $module::$updateButtonText,
'class' => 'buttonRed',
'disabled' => !$module::$onlineVersion
]); ?>
</div>
</div>

View File

@ -31,7 +31,7 @@ class install extends common
];
// Thèmes proposés à l'installation
public static $themes = [];
public static $themes = [];
public static $newVersion;
@ -51,31 +51,27 @@ class install extends common
]);
}
// Accès autorisé
else {
// Soumission du formulaire
if ($this->isPost()) {
$lang = $this->getInput('installLanguage');
setcookie('ZWII_UI', $lang, time() + 3600, helper::baseUrl(false, false), '', helper::isHttps(), true);
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'install/postinstall/' . $lang
]);
}
// Soumission du formulaire
if ($this->isPost()) {
$lang = $this->getInput('installLanguage');
// Place le cookie pour la suite de l'installation
setcookie('ZWII_UI', $lang, time() + 3600, helper::baseUrl(false, false), '', false, false);
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'install/postinstall/' . $lang
]);
}
//Nettoyage anciennes installations
helper::deleteCookie('ZWII_CONTENT');
// Liste des langues UI disponibles
if (is_dir(self::I18N_DIR)) {
$dir = getcwd();
chdir(self::I18N_DIR);
$files = glob('*.json');
// Ajouter une clé au tableau avec le code de langue
foreach ($files as $file) {
// La langue est-elle référencée ?
if (array_key_exists(basename($file, '.json'), self::$languages)) {
self::$i18nFiles[basename($file, '.json')] = self::$languages[basename($file, '.json')];
}
foreach ($this->getData(['languages']) as $lang => $value) {
self::$i18nFiles[$lang] = self::$languages[$lang];
;
}
chdir($dir);
}
$this->addOutput([
@ -105,7 +101,13 @@ class install extends common
$success = true;
// Validation de la langue transmise
$lang = array_key_exists($this->getUrl(2), self::$languages) ? $this->getUrl(2) : 'fr_FR';
self::$i18nUI = $this->getUrl(2);
self::$i18nUI = array_key_exists(self::$i18nUI, self::$languages) ? self::$i18nUI : 'fr_FR';
// par défaut le contenu est la langue d'installation
self::$i18nContent = self::$i18nUI;
setcookie('ZWII_CONTENT', self::$i18nContent, time() + 3600, helper::baseUrl(false, false), '', helper::isHttps(), true);
// Double vérification pour le mot de passe
if ($this->getInput('installPassword', helper::FILTER_STRING_SHORT, true) !== $this->getInput('installConfirmPassword', helper::FILTER_STRING_SHORT, true)) {
@ -132,7 +134,7 @@ class install extends common
'signature' => 1,
'mail' => $userMail,
'password' => $this->getInput('installPassword', helper::FILTER_PASSWORD, true),
'language' => $lang
'language' => self::$i18nUI
]
]);
@ -144,19 +146,17 @@ class install extends common
$userMail,
'Installation de votre site',
'Bonjour' . ' <strong>' . $userFirstname . ' ' . $userLastname . '</strong>,<br><br>' .
'Voici les détails de votre installation.<br><br>' .
'<strong>URL du site :</strong> <a href="' . helper::baseUrl(false) . '" target="_blank">' . helper::baseUrl(false) . '</a><br>' .
'<strong>Identifiant du compte :</strong> ' . $this->getInput('installId') . '<br>',
null
'Voici les détails de votre installation.<br><br>' .
'<strong>URL du site :</strong> <a href="' . helper::baseUrl(false) . '" target="_blank">' . helper::baseUrl(false) . '</a><br>' .
'<strong>Identifiant du compte :</strong> ' . $this->getInput('installId') . '<br>',
null,
$this->getData(['config', 'smtp', 'from']),
);
// Nettoyer les cookies de langue d'une précédente installation
helper::deleteCookie('ZWII_CONTENT');
// Installation du site de test
if (
$this->getInput('installDefaultData', helper::FILTER_BOOLEAN) === false
&& $lang === 'fr_FR'
&& self::$i18nContent === 'fr_FR'
) {
$this->initData('page', self::$i18nContent, true);
$this->initData('module', self::$i18nContent, true);
@ -166,9 +166,11 @@ class install extends common
}
// Jeu réduit pour les pages étrangères
if ($lang !== 'fr_FR') {
if (self::$i18nContent !== 'fr_FR') {
$this->initData('page', self::$i18nContent, false);
$this->initData('module', self::$i18nContent, false);
// Supprime l'installation FR générée par défaut.
$this->removeDir(self::DATA_DIR . 'fr_FR');
}
// Sauvegarder la configuration du Proxy
@ -197,8 +199,6 @@ class install extends common
// Nettoyage
unlink(self::TEMP_DIR . 'files.tar.gz');
unlink(self::TEMP_DIR . 'files.tar');
helper::deleteCookie('ZWII_UI');
// Créer le dossier des fontes
if (!is_dir(self::DATA_DIR . 'fonts')) {
@ -206,12 +206,12 @@ class install extends common
}
// Installation du thème sélectionné
$dataThemes = file_get_contents('core/module/install/ressource/themes/themes.json');
$dataThemes = json_decode($dataThemes, true);
$themeId = $dataThemes[$this->getInput('installTheme', helper::FILTER_STRING_SHORT)]['filename'];
if ($themeId !== 'default') {
$dataThemes = json_decode(file_get_contents('core/module/install/ressource/themes/themes.json'), true);
$dataThemes = $dataThemes['themes'];
$themeFilename = $dataThemes[$this->getInput('installTheme', helper::FILTER_STRING_SHORT)]['filename'];
if ($themeFilename !== '') {
$theme = new theme;
$theme->import('core/module/install/ressource/themes/' . $themeId);
$theme->import('core/module/install/ressource/themes/' . $themeFilename);
}
// Copie des thèmes dans les fichiers
@ -231,16 +231,14 @@ class install extends common
$this->copyDir('core/module/install/ressource/i18n', self::I18N_DIR);
unlink(self::I18N_DIR . 'languages.json');
// Créer sitemap
$this->createSitemap();
// Mise à jour de la liste des pages pour TinyMCE
$this->listPages();
// Fixe l'adresse from pour les envois d'email
$this->setData(['config', 'smtp', 'from', 'no-reply@' . str_replace('www.', '', $_SERVER['HTTP_HOST'])]);
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl(false),
'redirect' => helper::baseUrl(true) . $this->getData(['locale', 'homePageId']),
'notification' => $sent === true ? helper::translate('Installation terminée') : $sent,
'state' => ($sent === true && $success === true) ? true : null
'state' => ($sent === true && $success === true) ? true : null
]);
}
}
@ -248,8 +246,8 @@ class install extends common
// Affichage du formulaire
// Récupération de la liste des thèmes
$dataThemes = file_get_contents('core/module/install/ressource/themes/themes.json');
$dataThemes = json_decode($dataThemes, true);
$dataThemes = json_decode(file_get_contents('core/module/install/ressource/themes/themes.json'), true);
$dataThemes = $dataThemes['themes'];
self::$themes = helper::arrayColumn($dataThemes, 'name');
// Valeurs en sortie
@ -267,7 +265,7 @@ class install extends common
public function steps()
{
switch ($this->getInput('step', helper::FILTER_INT)) {
// Préparation
// Préparation
case 1:
$success = true;
// RAZ la mise à jour auto
@ -294,7 +292,7 @@ class install extends common
]
]);
break;
// Téléchargement
// Téléchargement
case 2:
file_put_contents(self::TEMP_DIR . 'update.tar.gz', helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/update.tar.gz'));
$md5origin = helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/update.md5');
@ -309,7 +307,7 @@ class install extends common
]
]);
break;
// Installation
// Installation
case 3:
$success = true;
// Check la réécriture d'URL avant d'écraser les fichiers
@ -340,15 +338,15 @@ class install extends common
]
]);
break;
// Configuration
// Configuration
case 4:
$success = true;
$rewrite = $this->getInput('data');
// Réécriture d'URL
if ($rewrite === "true") { // Ajout des lignes dans le .htaccess
if ($rewrite === "true") { // Ajout des lignes dans le .htaccess
$fileContent = file_get_contents('.htaccess');
$rewriteData = PHP_EOL .
'# URL rewriting' . PHP_EOL .
$rewriteData = PHP_EOL .
'# URL rewriting' . PHP_EOL .
'<IfModule mod_rewrite.c>' . PHP_EOL .
"\tRewriteEngine on" . PHP_EOL .
"\tRewriteBase " . helper::baseUrl(false, false) . PHP_EOL .
@ -373,6 +371,25 @@ class install extends common
// Effacer le backup
unlink('.htaccess.bak');
}
/**
* Met à jour les dictionnaires des langues depuis les modèles installés
*/
// Langues installées
$installedUI = $this->getData(['languages']);
// Langues disponibles avec la mise à jour
$store = json_decode(file_get_contents('core/module/install/ressource/i18n/languages.json'), true);
$store = $store['languages'];
foreach ($installedUI as $key => $value) {
if ($store[$key]['version'] > $value['version']) {
echo copy('core/module/install/ressource/i18n/' . $key . '.json', self::I18N_DIR . $key . '.json');
$this->setData(['languages', $key, $store[$key]]);
}
}
// Valeurs en sortie
$this->addOutput([
'display' => self::DISPLAY_JSON,
@ -381,7 +398,6 @@ class install extends common
'data' => null
]
]);
break;
}
}
@ -400,32 +416,4 @@ class install extends common
]);
}
/**
* Génère un fichier d'énumération des langues de l'UI
*/
private function makeUiLanguages()
{
// Générer une énumération absente
if (empty($enums)) {
if (is_dir(self::I18N_DIR) === false) {
mkdir(self::I18N_DIR);
}
$dir = getcwd();
chdir(self::I18N_DIR);
$files = glob('*.json');
chdir($dir);
$enums = [];
foreach ($files as $file => $value) {
if (basename($value, '.json') === 'languages') {
continue;
}
$enums[basename($value, '.json')] = [
'version' => "?",
'date' => 1672052400
];
}
$this->setData(['languages', $enums]);
}
}
}

View File

@ -44,7 +44,7 @@ class init extends common
]
],
'core' => [
'dataVersion' => 11600,
'dataVersion' => 12300,
'lastBackup' => 0,
'lastClearTmp' => 0,
'lastAutoUpdate' => 0,
@ -374,7 +374,7 @@ class init extends common
'position' => 1,
'group' => self::GROUP_VISITOR,
'targetBlank' => false,
'title' => 'HomePage',
'title' => 'Home page',
'shortTitle' => 'Home',
'block' => '12',
'barLeft' => '',
@ -387,7 +387,7 @@ class init extends common
'js' => ''
]
],
'html' => 'Welcome in this ZiiCMS, this is you first page !'
'html' => 'Welcome in this ZwiiCMS, congratulations this is you first page !'
]
];
@ -917,7 +917,9 @@ class init extends common
'directory' => self::FILE_DIR . 'source/galerie/landscape',
'homePicture' => 'iceberg.jpg',
'sort' => 'SORT_ASC',
'position' => 1
'position' => 1,
'showPageContent' => false,
'fullScreen' => false
],
'legend' => [
'desertjpg' => 'Un désert',
@ -936,7 +938,9 @@ class init extends common
'directory' => self::FILE_DIR . 'source/galerie/space',
'homePicture' => 'nebula.jpg',
'sort' => 'SORT_ASC',
'position' => 2
'position' => 2,
'showPageContent' => false,
'fullScreen' => false
],
'legend' => [
'earthjpg' => 'La Terre et la Lune',
@ -986,7 +990,7 @@ class init extends common
'data' => [],
'input' => [
[
'name' => 'Adresse mail',
'name' => 'Adresse électronique',
'position' => 1,
'required' => true,
'type' => 'mail',
@ -1091,11 +1095,11 @@ class init extends common
<p justify="">Le site internet propose les services suivants :</p>
<p justify="">Publication</p>
<p justify="">Le site est accessible gratuitement en tout lieu &agrave; tout Utilisateur ayant un acc&egrave;s &agrave; Internet. Tous les frais support&eacute;s par l\'Utilisateur pour acc&eacute;der au service (mat&eacute;riel informatique, logiciels, connexion Internet, etc.) sont &agrave; sa charge.</p>
<p justify="">L&rsquo;Utilisateur non membre n\'a pas acc&egrave;s aux services r&eacute;serv&eacute;s. Pour cela, il doit s&rsquo;inscrire en remplissant le formulaire. En acceptant de s&rsquo;inscrire aux services r&eacute;serv&eacute;s, l&rsquo;Utilisateur membre s&rsquo;engage &agrave; fournir des informations sinc&egrave;res et exactes concernant son &eacute;tat civil et ses coordonn&eacute;es, notamment son adresse email.</p>
<p justify="">L&rsquo;Utilisateur non membre n\'a pas acc&egrave;s aux services r&eacute;serv&eacute;s. Pour cela, il doit s&rsquo;inscrire en remplissant le formulaire. En acceptant de s&rsquo;inscrire aux services r&eacute;serv&eacute;s, l&rsquo;Utilisateur membre s&rsquo;engage &agrave; fournir des informations sinc&egrave;res et exactes concernant son &eacute;tat civil et ses coordonn&eacute;es, notamment son Adresse électronique.</p>
<p justify="">Pour acc&eacute;der aux services, l&rsquo;Utilisateur doit ensuite s\'identifier &agrave; l\'aide de son identifiant et de son mot de passe qui lui seront communiqu&eacute;s apr&egrave;s son inscription.</p>
<p justify="">Tout Utilisateur membre r&eacute;guli&egrave;rement inscrit pourra &eacute;galement solliciter sa d&eacute;sinscription en se rendant &agrave; la page d&eacute;di&eacute;e sur son espace personnel. Celle-ci sera effective dans un d&eacute;lai raisonnable.</p>
<p justify="">Tout &eacute;v&eacute;nement d&ucirc; &agrave; un cas de force majeure ayant pour cons&eacute;quence un dysfonctionnement du site ou serveur et sous r&eacute;serve de toute interruption ou modification en cas de maintenance, n\'engage pas la responsabilit&eacute; de www.site.com. Dans ces cas, l&rsquo;Utilisateur accepte ainsi ne pas tenir rigueur &agrave; l&rsquo;&eacute;diteur de toute interruption ou suspension de service, m&ecirc;me sans pr&eacute;avis.</p>
<p justify="">L\'Utilisateur a la possibilit&eacute; de contacter le site par messagerie &eacute;lectronique &agrave; l&rsquo;adresse email de l&rsquo;&eacute;diteur communiqu&eacute; &agrave; l&rsquo;ARTICLE 1.</p>
<p justify="">L\'Utilisateur a la possibilit&eacute; de contacter le site par messagerie &eacute;lectronique &agrave; l&rsquo;Adresse électronique de l&rsquo;&eacute;diteur communiqu&eacute; &agrave; l&rsquo;ARTICLE 1.</p>
<h2>ARTICLE 3 : Collecte des donn&eacute;es</h2>
<p justify="">Le site est exempt&eacute; de d&eacute;claration &agrave; la Commission Nationale Informatique et Libert&eacute;s (CNIL) dans la mesure o&ugrave; il ne collecte aucune donn&eacute;e concernant les Utilisateurs.</p>
<h2>ARTICLE 4&nbsp;: Propri&eacute;t&eacute; intellectuelle</h2>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,498 +1,2 @@
{
"'Ne pas afficher' crée une page orpheline non accessible par le biais des menus.": "",
"'Sauvegarder et télécharger les données du module": "",
"1/4 : Préparation...": "",
"10 minutes": "",
"10 tentatives": "",
"15 minutes": "",
"2/4 : Téléchargement...": "",
"3 tentatives": "",
"3/4 : Installation...": "",
"4/4 : Configuration...": "",
"5 minutes": "",
"5 tentatives": "",
"Accueil": "",
"Accès aux pages privées": "",
"Accès bloqué %d minutes": "",
"Accès interdit, erreur 403": "",
"Action interdite": "",
"Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.": "",
"Activer": "",
"Activer SMTP": "",
"Activer la journalisation": "",
"Actualiser": "",
"Administration": "",
"Administration complète du site": "",
"Adresse SMTP": "",
"Adresse du proxy": "",
"Adresse électronique": "",
"Affectation": "",
"Affiche le nom de la page parente suivi du nom de la page, le titre ne doit pas être masqué.": "",
"Afin d'assurer le bon fonctionnement de Zwii, veuillez ne pas fermer cette page avant la fin de l'opération.": "",
"Aide": "",
"Ajout - Édition - Suppression de fichiers": "",
"Ajout - Édition - Suppression de pages": "",
"Ajouter un utilisateur": "",
"Ajouter une fonte": "",
"Ancien mot de passe": "",
"Anonymat des adresses IP": "",
"Apache URL intelligent": "",
"Apache URL intelligentes": "",
"Apparence": "",
"Appliquer": "",
"Après": "",
"Après le contenu de la page": "",
"Archive": "",
"Archive ZIP": "",
"Archive copiée dans le dossier Modules du gestionnaire de fichier": "",
"Archive de thème invalide": "",
"Archive invalide": "",
"Archive invalide, l'écriture dans le dossier core est interdite": "",
"Archive invalide, le descripteur est absent": "",
"Archive invalide, le fichier de classe est absent": "",
"Archive invalide, les dossiers ne correspondent pas au descripteur": "",
"Archive non spécifiée ou introuvable": "",
"Archive à restaurer": "",
"Arrière plan": "",
"Arrière plan des blocs": "",
"Arrière plan des champs": "",
"Au début": "",
"Aucun fichier journal à télécharger": "",
"Aucun journal à effacer": "",
"Aucun menu": "",
"Aucune liste noire à effacer": "",
"Aucune liste noire à télécharger": "",
"Auteur :": "",
"Authentification": "",
"Autoriser les robots à référencer le site": "",
"Avant le contenu de la page": "",
"Bannière": "",
"Barre 1/3 - page 2/3": "",
"Barre 1/4 - page 1/2 - barre 1/4": "",
"Barre 1/4 - page 3/4": "",
"Barre 2/12 - page 7/12 - barre 3/12": "",
"Barre 3/12 - page 7/12 - barre 2/12": "",
"Barre latérale": "",
"Barre latérale droite :": "",
"Barre latérale gauche :": "",
"Barres latérales": "",
"Bienvenue %s %s": "",
"Blocage après échecs": "",
"Bordure des blocs": "",
"Bordure des champs": "",
"Bouton Aide": "",
"Bouton Standard": "",
"Bouton de validation": "",
"Bouton effacement": "",
"Bouton retour": "",
"Bouton standard": "",
"Bouton validation": "",
"Boutons": "",
"Captcha complexe": "",
"Captcha à la connexion": "",
"Captcha, identifiant ou mot de passe incorrects": "",
"Capture d'écran Open Graph": "",
"Capture d'écran générée avec succès": "",
"Catalogue": "",
"Catégorie": "",
"Ce membre pourra téléverser ou télécharger des fichiers dans le dossier 'partage' et ses sous-dossiers": "",
"Cette page ne doit pas apparaître dans l'arborescence du menu. Créez une page orpheline.": "",
"Cette redirection ne concerne que les pages d'administration du site.": "",
"Chaîne Youtube": "",
"Chiffres": "",
"Clé de l'API <a href=\"https://app.screenshotapi.net/\" target=\"_blank\">ScreenShotApi</a>": "",
"Clé de l'API <a href='https://app.screenshotapi.net/' target='_blank'>ScreenShotApi</a>": "",
"Complète": "",
"Compte administrateur": "",
"Compte verrouillé": "",
"Configuration": "",
"Configuration du module": "",
"Configurer mon compte": "",
"Confirmation": "",
"Confirmer la suppression de cet utilisateur": "",
"Confirmer la dissociation du module de cette page": "",
"Confirmer la désinstallation du module": "",
"Confirmer la suppression de la page": "",
"Confirmer la suppression des données du module": "",
"Confirmez-vous la suppression de cette page ?": "",
"Connexion": "",
"Consulter l'aide en ligne": "",
"Contenu": "",
"Contenu avancé": "",
"Contenu du menu vertical": "",
"Contenu personnalisé": "",
"Cookies": "",
"Cookies Zwii": "",
"Copie de contenus localisés": "",
"Copie de sites inter-langues": "",
"Copie des traductions rédigées": "",
"Copie terminée avec des erreurs": "",
"Copie terminée avec succès": "",
"Copier sauvegardes auto": "",
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence.": "",
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence. La couleur du texte est automatique.": "",
"Couleurs": "",
"Créez un compte gratuit, recopier la clé , puis valider le formulaire avant de cliquer sur le bouton de génération": "",
"Dans quelle langue utiliserez-vous Zwii ?": "",
"Date": "",
"De": "",
"Description": "",
"Disposition": "",
"Données %s copiées vers %s": "",
"Données des modules": "",
"Données importées": "",
"Du": "",
"Dupliquer la page": "",
"Déconnecte les sessions ouvertes précédemment sur d'autres navigateurs ou terminaux. Activation recommandée.": "",
"Déconnecter": "",
"Déconnexion !": "",
"Déconnexion automatique": "",
"Dévoiler le mot de passe": "",
"Echec de l'écriture, vérifiez les permissions": "",
"Effacer la page": "",
"Emplacement :": "",
"Emplacement dans le menu": "",
"En cas de changement de module, les données du module précédent seront supprimées.": "",
"En position libre ajoutez le module en plaçant [MODULE] à l'endroit voulu dans votre page.": "",
"Enregistrer": "",
"Envoyer un message de confirmation": "",
"Erreur : sauvegarde non générée !": "",
"Erreur d'URL": "",
"Erreur d'extraction, vérifiez les permissions": "",
"Erreur de copie": "",
"Erreur de copie, vérifiez les permissions": "",
"Erreur de lecture, vérifiez les permissions": "",
"Erreur inconnue": "",
"Erreur inconnue, le module n'est pas installé": "",
"Extension": "",
"Facebook": "",
"Famille": "",
"Favicon thème sombre": "",
"Feuille de style spécifique à la page.": "",
"Fichiers effacés": "",
"Fil d'Ariane dans le titre": "",
"Fond du sous-menu": "",
"FontId": "",
"Fonte actualisée": "",
"Fonte créée": "",
"Fonte en ligne": "",
"Fonte installée": "",
"Fonte non créée, ressource absente !": "",
"Fonte supprimée": "",
"Fontes": "",
"Format incorrect": "",
"Fuseau horaire": "",
"Gabarits de page - Barre latérale": "",
"Gestion": "",
"Gestion des modules": "",
"Gestion des thèmes": "",
"Github": "",
"Groupe": "",
"Groupe requis pour accéder à la page :": "",
"Générer sitemap.xml et robots.txt": "",
"Générer une capture Open Graph": "",
"Gérer les fichiers": "",
"Gérer les modules": "",
"Hauteur de l'image :": "",
"ID de la chaîne : https://www.youtube.com/channel/[ID].": "",
"Icône": "",
"Icône avec bulle de texte": "",
"Identifiant": "",
"Identifiant (sans espace ni majuscule)": "",
"Identité": "",
"Identité de la fonte": "",
"Identité du site": "",
"Il apparaît dans la barre de titre et les partages sur les réseaux sociaux.": "",
"Image": "",
"Importation d'utilisateurs": "",
"Importation de fichier plat CSV": "",
"Importation effectuée": "",
"Importer": "",
"Importer dans": "",
"Importer des utilisateurs en masse": "",
"Impossible d'ouvrir l'archive": "",
"Impossible de modifier votre propre groupe.": "",
"Impossible de supprimer une page contenant des pages enfants": "",
"Impossible de supprimer votre propre compte": "",
"Inclure le contenu du gestionnaire de fichiers": "",
"Incorrect": "",
"Informations": "",
"Instagram": "",
"Installation": "",
"Installation terminée": "",
"Installer": "",
"Installer depuis le catalogue en ligne": "",
"Installer depuis une archive": "",
"Installer les données d'un module": "",
"Installer ou mettre à jour un module téléchargé": "",
"Installer un module": "",
"Installer un thème archivé (site ou administration)": "",
"Instructions JS ou jquery spécifiques à la page.": "",
"Interface": "",
"Jeton invalide": "",
"Journal réinitialisé avec succès": "",
"Journalisation": "",
"L'archive a été déposée dans le gestionnaire de fichiers. Les archives inférieures à la version 9 ne sont pas acceptées.": "",
"L'identifiant est défini lors de la création du compte, il ne peut pas être modifié.": "",
"La carte du site a été mise à jour": "",
"La clé de l'API ne peut pas être vide": "",
"La description d'une page participe à son référencement, chaque page doit disposer d'une description différente.": "",
"La page %s est ouverte par l'utilisateur %s": "",
"La page demandée n'existe pas ou est introuvable (erreur 404)": "",
"La page est affichée dans un menu horizontal mais pas dans le menu vertical d'une barre latérale.": "",
"La première page que vos visiteurs verront.": "",
"La règlementation française impose un anonymat de niveau 2": "",
"La sauvegarde des fichiers peut prendre du temps. Continuer ?": "",
"La suppression a échoué": "",
"La version installée est plus récente": "",
"La vérification est quotidienne. Option désactivée si la configuration du serveur ne le permet pas.": "",
"Langue de l'administration": "",
"Langue du site sélectionnée": "",
"Langue par défaut": "",
"Langues": "",
"Langues disponibles": "",
"Langues installées": "",
"Largeur de l'image :": "",
"Le curseur horizontal règle le niveau de transparence, le placer tout à la gauche pour un surlignement invisible.": "",
"Le fuseau horaire est utile au bon référencement": "",
"Le menu accessoire est aligné à droite de la barre de menu, c'est un emplacement réservé aux drapeaux et au bouton de connexion.": "",
"Le menu horizontal intégral": "",
"Le module %s a été %s": "",
"Le module %s de la page %s a été supprimé": "",
"Le module %s est désinstallé, il reste peut-être des données dans %s": "",
"Le sous-menu de la page parente": "",
"Le survol d'une icône de l'écran de connexion affiche temporairement le mot de passe.": "",
"Le titre court est affiché dans les menus. Il peut être identique au titre de la page.": "",
"Les langues sélectionnées sont identiques": "",
"Les mentions légales sont obligatoires en France. Une option du pied de page ajoute un lien discret vers cette page.": "",
"Les modifications que vous avez apportées ne seront peut-être pas enregistrées.": "",
"Lettres": "",
"Licence :": "",
"Lien page des mentions légales.": "",
"Liens": "",
"Limitation des tentatives": "",
"Linkedin": "",
"Liste noire": "",
"Liste noire réinitialisée avec succès": "",
"Lors d'une mise à jour automatique, conserve le fichier htaccess de la racine du site.": "",
"Maintenance": "",
"Masquer la page et les pages enfants dans le menu d'une barre latérale": "",
"Masquer les pages enfants dans le menu horizontal": "",
"Mentions légales": "",
"Menu": "",
"Menu accessoire": "",
"Menu standard": "",
"Message d'acceptation des Cookies": "",
"Message de consentement aux cookies": "",
"Mettre à jour": "",
"Mettre à jour le module orphelin": "",
"Mise en forme des titres": "",
"Mise en forme du texte": "",
"Mise en forme du titre": "",
"Mise en page": "",
"Mise à jour": "",
"Mise à jour automatisée": "",
"Mise à jour de ZwiiCMS": "",
"Mise à jour terminée avec succès.": "",
"Modifications enregistrées": "",
"Module": "",
"Module de la page": "",
"Modules configurés": "",
"Modules installés": "",
"Modules orphelins": "",
"Mot de passe": "",
"Mot de passe oublié": "",
"Multilingue": "",
"Méta-description": "",
"Méta-titre": "",
"Ne pas afficher": "",
"Ne pas charger l'exemple de site (utilisateurs avancés)": "",
"Ne pas saisir les balises": "",
"Niveau 1 (192.168.12.x)": "",
"Niveau 2 (192.168.x.x)": "",
"Niveau 3 (192.x.x.x)": "",
"Nom": "",
"Nom utilisateur": "",
"Non": "",
"Notre site est actuellement en maintenance. Nous sommes désolés pour la gêne occasionnée et faisons notre possible pour être rapidement de retour.": "",
"Nouveau contenu localisé": "",
"Nouveau mot de passe": "",
"Nouveau mot de passe enregistré": "",
"Nouvel utilisateur": "",
"Nouvelle page créée": "",
"Nouvelle page ou barre latérale": "",
"Option active en mode déconnecté uniquement, les pages enfants sont visibles et accessibles.": "",
"Option recommandée pour sécuriser la connexion. S'applique à tous les captchas du site. Le captcha simple se limite à une addition de nombres de 0 à 10. Le captcha complexe utilise quatre opérations de nombres de 0 à 20. Activation recommandée.": "",
"Options avancées": "",
"Origine": "",
"Oui": "",
"Page": "",
"Page 2/3 - barre 1/3": "",
"Page 3/4 - barre 1/4": "",
"Page associée": "",
"Page dupliquée": "",
"Page et module dupliqués": "",
"Page inexistante, erreur 404": "",
"Page non cliquable": "",
"Page parent": "",
"Page standard": "",
"Page supprimée": "",
"Pages dans le menu": "",
"Pages du site": "",
"Pages et les modules de": "",
"Pages orphelines": "",
"Papier peint": "",
"Par défaut le menu est affiché APRES le contenu de la page. Pour le positionner à un emplacement précis, insérez [MENU] dans le contenu de la page.": "",
"Paramètres": "",
"Paramètres de la localisation": "",
"Paramètres de la sauvegarde": "",
"Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d'envoi de mail.": "",
"Partage de fichiers autorisé": "",
"Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.": "",
"Permission": "",
"Permission et référencement": "",
"Permissions :": "",
"Pied de page": "",
"Pinterest": "",
"Plan du site": "",
"Police des titres": "",
"Police du texte": "",
"Port SMTP": "",
"Port du proxy": "",
"Position": "",
"Position du module": "",
"Pour définir la page comme barre latérale, choisissez l'option dans la liste.": "",
"Prénom": "",
"Préparation de la mise à jour": "",
"Préserver le fichier htaccess racine": "",
"Préserver les comptes des utilisateurs déjà installés": "",
"Prévenir l'utilisateur par mail": "",
"Pseudo": "",
"Ratio :": "",
"Recherche dans le site": "",
"Rechercher": "",
"Rechercher une mise à jour en ligne": "",
"Redirection vers la connexion": "",
"Renseignez les champs ci-dessous pour finaliser l'installation.": "",
"Restauration effectuée avec succès": "",
"Restaurer": "",
"Restaurer les données du site": "",
"Rester connecté sur ce navigateur": "",
"Retour": "",
"Rien à importer, erreur de format ou fichier incorrect": "",
"Référencement": "",
"Réinitialisation du mot de passe": "",
"Réinitialiser avec le thème par défaut": "",
"Réinitialiser la feuille de style": "",
"Réinitialiser la liste": "",
"Réinitialiser le journal": "",
"Réinstaller": "",
"Réseau": "",
"Réseaux sociaux": "",
"S'ouvre dans un nouvel onglet": "",
"SMTP": "",
"Saisir la clé, puis valider le formulaire avant de cliquer sur le bouton de génération": "",
"Saisissez le Titre de gestion des cookies.": "",
"Saisissez le message pour les cookies déposés par ZwiiCMS, nécessaires au fonctionnement et qui ne nécessitent pas de consentement.": "",
"Saisissez le texte du lien vers les mentions légales,la page doit être définie dans la configuration du site.": "",
"Saisissez votre ID : https://pinterest.com/[ID].": "",
"Saisissez votre ID : https://twitter.com/[ID].": "",
"Saisissez votre ID : https://www.facebook.com/[ID].": "",
"Saisissez votre ID : https://www.instagram.com/[ID].": "",
"Saisissez votre ID Github : https://github.com/[ID].": "",
"Saisissez votre ID Linkedin : https://fr.linkedin.com/in/[ID].": "",
"Saisissez votre ID Utilisateur : https://www.youtube.com/user/[ID].": "",
"Sauvegarde": "",
"Sauvegarde automatique quotidienne du site": "",
"Sauvegarde du thème dans le": "",
"Sauvegarde générée avec succès.": "",
"Sauvegarder": "",
"Sauvegarder et télécharger le module": "",
"Sauvegarder le module dans le gestionnaire de fichiers": "",
"Sauvegarder les données du module dans le gestionnaire de fichiers": "",
"Sauvegarder les données du site": "",
"Script dans body": "",
"Script dans head": "",
"Scripts externes": "",
"Se déconnecter": "",
"Service en ligne inaccessible": "",
"Seul un administrateur peut se connecter lors d'une maintenance": "",
"Si le contenu du gestionnaire de fichiers est très volumineux, mieux vaut une copie par FTP.": "",
"Signature": "",
"Site": "",
"Site en maintenance": "",
"Suppression interdite": "",
"Suppression interdite, page active dans la configuration du site": "",
"Supprime le point d'interrogation dans les URL, l'option est indisponible avec les autres serveurs Web": "",
"Supprimer": "",
"Supprimer la page": "",
"Supprimer le module": "",
"Supprimer toutes les sauvegardes automatiques ?": "",
"Sécurité": "",
"Sécurité de la connexion": "",
"Sécurité désactivée": "",
"Sélectionner un fichier": "",
"Sélectionnez au moins un contenu à afficher": "",
"Sélectionnez la langue à copier vers une langue cible": "",
"Sélectionnez une icône adaptée à un thème sombre.<br>Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.": "",
"Sélectionnez une image ou une icône de petite dimension": "",
"Sélectionnez une langue": "",
"Sélectionnez une page contenant le module 'Recherche'. Une option du pied de page ajoute un lien discret vers cette page.": "",
"Séparateur": "",
"Taille": "",
"Texte": "",
"Thème": "",
"Thème de l'administration": "",
"Thème du site": "",
"Thème importé": "",
"Thèmes": "",
"Titre": "",
"Titre court": "",
"Titre masqué dans la page": "",
"Titres": "",
"Traduction supprimée": "",
"Twitter": "",
"Type de captcha": "",
"Type de proxy": "",
"Téléchargement et validation de l'archive": "",
"Télécharger": "",
"Télécharger la liste": "",
"Télécharger le journal": "",
"Télécharger le module dans le gestionnaire de fichiers": "",
"URL incorrecte": "",
"Un mail a été envoyé pour confirmer la réinitialisation": "",
"Une archive du dossier /site/data est conservée pendant 30 jours. Activation recommandée": "",
"Une erreur est survenue lors de l'étape :": "",
"Url du fichier de fonte": "",
"Utilisateur inexistant": "",
"Utilisateur supprimé": "",
"Utilisateurs": "",
"Valider": "",
"Vers": "",
"Version": "",
"Version n°": "",
"Vider dossier sauvegardes auto": "",
"Vous n'êtes pas autorisé à consulter cette page (erreur 403)": "",
"Youtube": "",
"actualisé": "",
"favicon.ico": "",
"faviconDark.ico": "",
"gestionnaire de fichiers": "",
"installé": "",
"largeur de site :": "",
"largeur du site": "",
"sauvegardé avec succès": "",
"vers": "",
"vers ZwiiCMS": "",
"À l'emplacement du mot clé [MODULE] dans la page": "",
"Échecs": "",
"Éditer": "",
"Éditer la page": "",
"Éditer les dialogues": "",
"Éditeur CSS": "",
"Éditeur JS": "",
"Éditeur de script %s": "",
"Éditeur de script dans Body": "",
"Éditeur de script dans Head": "",
"Étiquettes des pages spéciales": ""
}

View File

@ -1,498 +0,0 @@
{
"'Ne pas afficher' crée une page orpheline non accessible par le biais des menus.": "'Μην δείχνετε'δημιουργεί μια ορφανή σελίδα στην οποία δεν είναι δυνατή η πρόσβαση μέσω των μενού.",
"'Sauvegarder et télécharger les données du module": "Αποθήκευση και ανάκτηση δεδομένων της Πρόσθετος",
"1/4 : Préparation...": "1/4: Προετοιμασία...",
"10 minutes": "10 λεπτά",
"10 tentatives": "10 προσπάθειες",
"15 minutes": "15 λεπτά",
"2/4 : Téléchargement...": "2/4: Λήψη...",
"3 tentatives": "3 προσπάθειες",
"3/4 : Installation...": "3/4: Εγκατάσταση...",
"4/4 : Configuration...": "4/4: Διαμόρφωση...",
"5 minutes": "5 λεπτά",
"5 tentatives": "5 προσπάθειες",
"Accueil": "Αρχική",
"Accès aux pages privées": "Πρόσβαση σε ιδιωτικές σελίδες",
"Accès bloqué %d minutes": "Μπλοκαρισμένη πρόσβαση %d λεπτά",
"Accès interdit, erreur 403": "Άρνηση πρόσβασης, σφάλμα 403",
"Action interdite": "Απαγορευμένη ενέργεια",
"Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.": "Υποχρεωτική ενεργοποίηση σύμφωνα με τη γαλλική νομοθεσία, εκτός αν χρησιμοποιείτε το δικό σας σύστημα συγκατάθεσης.",
"Activer": "Ενεργοποίηση",
"Activer SMTP": "Ενεργοποίηση SMTP",
"Activer la journalisation": "Ενεργοποίηση ημερήσιας καταγραφής συμβάντων",
"Actualiser": "Ενημέρωση",
"Administration": "Θέμα διαχείρισης",
"Administration complète du site": "Πλήρης διαχείριση του ιστότοπου",
"Adresse SMTP": "Διεύθυνση SMTP",
"Adresse du proxy": "Τύπος διακομιστή μεσολάβησης",
"Adresse électronique": "Διεύθυνση e-mail",
"Affectation": "Ανάθεση",
"Affiche le nom de la page parente suivi du nom de la page, le titre ne doit pas être masqué.": "Εμφανίζει το όνομα της μητρικής σελίδας ακολουθούμενο από το όνομα της σελίδας, ο τίτλος δεν πρέπει να είναι κρυμμένος",
"Afin d'assurer le bon fonctionnement de Zwii, veuillez ne pas fermer cette page avant la fin de l'opération.": "Για να διασφαλιστεί η σωστή λειτουργία του Zwii, παρακαλούμε να μην κλείσετε αυτή τη σελίδα μέχρι να ολοκληρωθεί η λειτουργία.",
"Aide": "Βοήθεια",
"Ajout - Édition - Suppression de fichiers": "Προσθήκη - Επεξεργασία - Διαγραφή αρχείων",
"Ajout - Édition - Suppression de pages": "Προσθήκη - Επεξεργασία - Διαγραφή σελίδων",
"Ajouter un utilisateur": "Προσθέστε έναν χρήστη",
"Ajouter une fonte": "Προσθήκη γραμματοσειράς",
"Ancien mot de passe": "Παλαιός κωδικός πρόσβασης",
"Anonymat des adresses IP": "Ανωνυμία διευθύνσεων IP",
"Apache URL intelligent": "Ευφυής διεύθυνση URL του Apache",
"Apache URL intelligentes": "Έξυπνες διευθύνσεις URL Apache",
"Apparence": "Εμφάνιση",
"Appliquer": "Ισχύουν",
"Après": "Μετά",
"Après le contenu de la page": "Μετά το περιεχόμενο της σελίδας",
"Archive": "αρχείο",
"Archive ZIP": "ZIP αρχείο",
"Archive copiée dans le dossier Modules du gestionnaire de fichier": "Το αρχείο αντιγράφεται στο φάκελο Modules του διαχειριστή αρχείων",
"Archive de thème invalide": "Μη έγκυρο αρχείο θέματος",
"Archive invalide": "Μη έγκυρο αρχείο",
"Archive invalide, l'écriture dans le dossier core est interdite": "Μη έγκυρο αρχείο, δεν επιτρέπεται η εγγραφή στο φάκελο πυρήνα",
"Archive invalide, le descripteur est absent": "Μη έγκυρο αρχείο, λείπει ο περιγραφέας",
"Archive invalide, le fichier de classe est absent": "Μη έγκυρο αρχείο, το αρχείο κλάσης λείπει",
"Archive invalide, les dossiers ne correspondent pas au descripteur": "Μη έγκυρο αρχείο, οι εγγραφές δεν ταιριάζουν με τον περιγραφέα",
"Archive non spécifiée ou introuvable": "Το αρχείο δεν έχει καθοριστεί ή δεν βρέθηκε",
"Archive à restaurer": "Αρχείο προς αποκατάσταση",
"Arrière plan": "Φόντο ",
"Arrière plan des blocs": "Μπλοκ φόντο",
"Arrière plan des champs": "Φόντο των πεδίων",
"Au début": "Στην αρχή",
"Aucun fichier journal à télécharger": "Δεν υπάρχουν αρχεία καταγραφής για λήψη",
"Aucun journal à effacer": "Δεν υπάρχει αρχείο καταγραφής προς διαγραφή",
"Aucun menu": "Δεν υπάρχει μενού",
"Aucune liste noire à effacer": "Δεν υπάρχει μαύρη λίστα για διαγραφή",
"Aucune liste noire à télécharger": "Δεν υπάρχει μαύρη λίστα για λήψη",
"Auteur :": "Συγγραφέας",
"Authentification": "Αυθεντικοποίηση",
"Autoriser les robots à référencer le site": "Επιτρέψτε στα ρομπότ να αναφέρουν τον ιστότοπο",
"Avant le contenu de la page": "Πριν από το περιεχόμενο της σελίδας",
"Bannière": "Πανό",
"Barre 1/3 - page 2/3": "πλευρική στήλη 1/3 - σελίδα 2/3",
"Barre 1/4 - page 1/2 - barre 1/4": "πλευρική στήλη 1/4 - σελίδα 1/2 - πλευρική στήλη 1/4",
"Barre 1/4 - page 3/4": "πλευρική στήλη 1/4 - σελίδα 3/4",
"Barre 2/12 - page 7/12 - barre 3/12": "πλευρική στήλη 2/12 - σελίδα 7/12 - πλευρική στήλη 3/12",
"Barre 3/12 - page 7/12 - barre 2/12": "πλευρική στήλη 3/12 - σελίδα 7/12 - πλευρική στήλη 2/12",
"Barre latérale": "πλευρική στήλη",
"Barre latérale droite :": "Δεξιά πλευρική στήλη",
"Barre latérale gauche :": "Αριστερή πλευρική στήλη",
"Barres latérales": "Πλαϊνές μπάρες",
"Bienvenue %s %s": "Καλώς ήρθατε %s %s",
"Blocage après échecs": "Αποκλεισμός μετά από αποτυχίες",
"Bordure des blocs": "Πάχος γραμμής Μπλοκ ",
"Bordure des champs": " περιγράμματος πεδίου",
"Bouton Aide": "Κουμπί βοήθειας",
"Bouton Standard": "Τυπικό κουμπί",
"Bouton de validation": "Κουμπί επιβεβαίωση",
"Bouton effacement": "Κουμπί διαγραφής",
"Bouton retour": "Κουμπί επιστροφής",
"Bouton standard": "τυπικό κουμπί",
"Bouton validation": "Κουμπί επικύρωσης",
"Boutons": "Κουμπιά",
"Captcha complexe": "Πολύπλοκο Captcha",
"Captcha à la connexion": "Captcha για σύνδεση στον ιστότοπο",
"Captcha, identifiant ou mot de passe incorrects": "Λανθασμένο captcha, όνομα χρήστη ή κωδικός πρόσβασης",
"Capture d'écran Open Graph": "Στιγμιότυπο του Open Graph",
"Capture d'écran générée avec succès": "Επιτυχώς δημιουργημένο στιγμιότυπο οθόνης",
"Catalogue": "κατάλογος",
"Catégorie": "Κατηγορία",
"Ce membre pourra téléverser ou télécharger des fichiers dans le dossier 'partage' et ses sous-dossiers": "Αυτό το μέλος θα μπορεί να πραγματοποιεί μεταφόρτωση ή λήψη αρχείων στο φάκελο \"share\" και στους υποφακέλους του.",
"Cette page ne doit pas apparaître dans l'arborescence du menu. Créez une page orpheline.": "Αυτή η σελίδα δεν θα πρέπει να εμφανίζεται στο δέντρο μενού. Δημιουργήστε μια ορφανή σελίδα.",
"Cette redirection ne concerne que les pages d'administration du site.": "Αυτή η ανακατεύθυνση αφορά μόνο τις σελίδες διαχείρισης της ιστοσελίδας",
"Chaîne Youtube": "Κανάλι σας στο Youtube",
"Chiffres": "Αριθμοί",
"Clé de l'API <a href=\"https://app.screenshotapi.net/\" target=\"_blank\">ScreenShotApi</a>": "Key API <a href=\"https://app.screenshotapi.net/\" target=\"_blank\">ScreenShotApi</a>",
"Clé de l'API <a href='https://app.screenshotapi.net/' target='_blank'>ScreenShotApi</a>": "Κey API <a href='https://app.screenshotapi.net/' target='_blank'>ScreenShotApi</a>",
"Complète": "πλήρης",
"Compte administrateur": "πρόσβαση Διαχειριστής",
"Compte verrouillé": "Κλειδωμένος λογαριασμός",
"Configuration": "Διαμόρφωση",
"Configuration du module": "Ρύθμιση πρόσθετου",
"Configurer mon compte": "Ρύθμιση του λογαριασμού μου",
"Confirmation": "Επιβεβαίωση",
"Confirmer la suppression de cet utilisateur": "Επιβεβαίωση διαγραφής αυτού του χρήστη",
"Confirmer la dissociation du module de cette page": "Επιβεβαιώστε το διαχωρισμό του πρόσθετου από αυτή τη σελίδα",
"Confirmer la désinstallation du module": "Επιβεβαιώστε την απεγκατάσταση του πρόσθετου",
"Confirmer la suppression de la page": "Επιβεβαίωση διαγραφής της σελίδας",
"Confirmer la suppression des données du module": "Επιβεβαίωση της διαγραφής των δεδομένων του πρόσθετου",
"Confirmez-vous la suppression de cette page ?": "Επιβεβαιώνετε τη διαγραφή αυτής της σελίδας ?",
"Connexion": "Σύνδεση",
"Consulter l'aide en ligne": "Συμβουλευτείτε τη διαδικτυακή βοήθεια",
"Contenu": "Περιεχόμενο",
"Contenu avancé": "Προηγμένο περιεχόμενο",
"Contenu du menu vertical": "Περιεχόμενο του κάθετου μενού",
"Contenu personnalisé": "Προσαρμοσμένο περιεχόμενο",
"Cookies": "Cookies",
"Cookies Zwii": "Cookies Zwii",
"Copie de contenus localisés": "Αντίγραφο εντοπισμένου περιεχομένου",
"Copie de sites inter-langues": "Αντιγραφή ιστότοπων πολλαπλών γλωσσών",
"Copie des traductions rédigées": "Αντίγραφο γραπτών μεταφράσεων",
"Copie terminée avec des erreurs": "Η αντιγραφή ολοκληρώθηκε με σφάλματα",
"Copie terminée avec succès": "Η αντιγραφή ολοκληρώθηκε με επιτυχία",
"Copier sauvegardes auto": "Αντιγραφή αυτόματου αντιγράφου ασφαλείας",
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence.": "Το χρώμα που είναι ορατό ελλείψει εικόνας.<br />Το οριζόντιο ρυθμιστικό ρυθμίζει το επίπεδο διαφάνειας. ",
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence. La couleur du texte est automatique.": "Το χρώμα που είναι ορατό ελλείψει εικόνας.<br />Το οριζόντιο ρυθμιστικό ρυθμίζει το επίπεδο διαφάνειας. Το χρώμα κειμένου είναι αυτόματο.",
"Couleurs": "Χρώματα",
"Créez un compte gratuit, recopier la clé , puis valider le formulaire avant de cliquer sur le bouton de génération": "Δημιουργήστε έναν δωρεάν λογαριασμό, αντιγράψτε το κey και, στη συνέχεια, επικυρώστε τη φόρμα πριν κάνετε κλικ στο κουμπί generate",
"Dans quelle langue utiliserez-vous Zwii ?": "Σε ποια γλώσσα θα χρησιμοποιείτε το Zwii;",
"Date": "Ημερομηνία",
"De": "Από",
"Description": "Περιγραφή της ιστοσελίδας",
"Disposition": "Σχέδιο",
"Données %s copiées vers %s": "Τα δεδομένα %s αντιγράφηκαν στο %s",
"Données des modules": "Δεδομένα Πρόσθετα",
"Données importées": "Εισαγόμενα δεδομένα",
"Du": "από",
"Dupliquer la page": "Διπλασιάστε τη σελίδα",
"Déconnecte les sessions ouvertes précédemment sur d'autres navigateurs ou terminaux. Activation recommandée.": "Αποσύνδεση περιόδων σύνδεσης που είχαν ανοίξει προηγουμένως σε άλλα προγράμματα περιήγησης ιστού ή τερματικά υπολογιστή. Συνιστάται ενεργοποιημένη.",
"Déconnecter": "Αποσύνδεση",
"Déconnexion !": "Έξοδος",
"Déconnexion automatique": "Αυτόματη αποσύνδεση",
"Dévoiler le mot de passe": "αποκαλύψτε τον κωδικό πρόσβασης",
"Echec de l'écriture, vérifiez les permissions": "Η εγγραφή απέτυχε, ελέγξτε τα δικαιώματα",
"Effacer la page": "Διαγραφή σελίδας",
"Emplacement :": "Τοποθεσία",
"Emplacement dans le menu": "Θέση στο μενού",
"En cas de changement de module, les données du module précédent seront supprimées.": "Εάν αλλάξετε το πρόσθετο, τα δεδομένα της προηγούμενης ενότητας θα διαγραφούν.",
"En position libre ajoutez le module en plaçant [MODULE] à l'endroit voulu dans votre page.": "Στην ελεύθερη θέση προσθέστε την ενότητα τοποθετώντας το [module] στην επιθυμητή θέση στη σελίδα σας. ",
"Enregistrer": "Αποθήκευση ",
"Envoyer un message de confirmation": "Στείλτε ένα μήνυμα επιβεβαίωσης",
"Erreur : sauvegarde non générée !": "Σφάλμα: δεν δημιουργήθηκε αντίγραφο ασφαλείας!",
"Erreur d'URL": "Σφάλμα URL",
"Erreur d'extraction, vérifiez les permissions": "Σφάλμα εξαγωγής, ελέγξτε τα δικαιώματα",
"Erreur de copie": "Σφάλμα αντιγραφής",
"Erreur de copie, vérifiez les permissions": "Σφάλμα αντιγραφής, έλεγχος δικαιωμάτων",
"Erreur de lecture, vérifiez les permissions": "Σφάλμα ανάγνωσης, ελέγξτε τα δικαιώματα",
"Erreur inconnue": "Άγνωστο σφάλμα",
"Erreur inconnue, le module n'est pas installé": "Άγνωστο σφάλμα, το πρόσθετο δεν έχει εγκατασταθεί",
"Extension": "Επέκταση",
"Facebook": "Facebook",
"Famille": "Οικογένεια γραμματοσειρών",
"Favicon thème sombre": "Favicon σκοτεινό θέμα",
"Feuille de style spécifique à la page.": "Σελίδα-συγκεκριμένο φύλλο στυλ css",
"Fichiers effacés": "Διαγραμμένα αρχεία",
"Fil d'Ariane dans le titre": "Διαδρομή στον τίτλο",
"Fond du sous-menu": "Φόντο υπομενού",
"FontId": "FontId",
"Fonte actualisée": "Ενημερωμένο χυτοσίδηρο",
"Fonte créée": "Χυτοσίδηρος που δημιουργήθηκε",
"Fonte en ligne": "online γραμματοσειρά",
"Fonte installée": "Εγκατεστημένη γραμματοσειρά",
"Fonte non créée, ressource absente !": "Ο χυτοσίδηρος δεν δημιουργήθηκε, ο πόρος δεν είναι διαθέσιμος!",
"Fonte supprimée": "Διαγράφεται χυτοσίδηρος",
"Fontes": "Γραμματοσειρές",
"Format incorrect": "Λάθος μορφή",
"Fuseau horaire": "Ζώνη ώρας",
"Gabarits de page - Barre latérale": "Πρότυπα σελίδας - Πλαϊνή μπάρα",
"Gestion": "Διαχείριση θεμάτων",
"Gestion des modules": "Διαχείριση πρόσθετων",
"Gestion des thèmes": "Διαχείριση θεμάτων",
"Github": "Github",
"Groupe": "Ομάδα",
"Groupe requis pour accéder à la page :": "Ομάδα που απαιτείται για την πρόσβαση στη σελίδα",
"Générer sitemap.xml et robots.txt": "Δημιουργία sitemap.xml και robots.txt",
"Générer une capture Open Graph": "Δημιουργήστε ένα στιγμιότυπο Open Graph",
"Gérer les fichiers": "Διαχείριση αρχείων",
"Gérer les modules": "Διαχείριση των ενοτήτων",
"Hauteur de l'image :": "Ύψος της εικόνας",
"ID de la chaîne : https://www.youtube.com/channel/[ID].": "Εισαγάγετε το αναγνωριστικό σας ID : https://www.youtube.com/channel/[ID].",
"Icône": "Εικονίδιο",
"Icône avec bulle de texte": "Εικονίδιο με φυσαλίδα κειμένου",
"Identifiant": "αναγνωριστικό",
"Identifiant (sans espace ni majuscule)": "Όνομα χρήστη (χωρίς κενά ή κεφαλαία γράμματα)",
"Identité": "Ταυτότητα",
"Identité de la fonte": "Ταυτότητα της γραμματοσειράς",
"Identité du site": "Ταυτότητα του ιστότοπου",
"Il apparaît dans la barre de titre et les partages sur les réseaux sociaux.": "Εμφανίζεται στη γραμμή τίτλου και στα κοινά μέσα κοινωνικής δικτύωσης.",
"Image": "Εικόνα",
"Importation d'utilisateurs": "Εισαγωγή χρηστών",
"Importation de fichier plat CSV": "Εισαγωγή επίπεδου αρχείου CSV",
"Importation effectuée": "Η εισαγωγή έγινε",
"Importer": "Εισαγωγή ",
"Importer dans": "Εισαγωγή σε",
"Importer des utilisateurs en masse": "Εισαγωγή μεγάλου αριθμού χρηστών",
"Impossible d'ouvrir l'archive": "Άγνωστο σφάλμα, το πρόσθετο δεν έχει εγκατασταθεί",
"Impossible de modifier votre propre groupe.": "Δεν μπορείτε να αλλάξετε τη δική σας ομάδα.",
"Impossible de supprimer une page contenant des pages enfants": "Αδυναμία διαγραφής μιας σελίδας που περιέχει παιδικές σελίδες",
"Impossible de supprimer votre propre compte": "Αδυναμία διαγραφής του δικού σας λογαριασμού",
"Inclure le contenu du gestionnaire de fichiers": "Συμπεριλάβετε τα περιεχόμενα του διαχειριστή αρχείων",
"Incorrect": "Λανθασμένο",
"Informations": "Πληροφορίες",
"Instagram": "Instagram",
"Installation": "Εγκατάσταση",
"Installation terminée": "Η εγκατάσταση ολοκληρώθηκε",
"Installer": "Εγκαταστήστε ",
"Installer depuis le catalogue en ligne": "Εγκατάσταση από τον online κατάλογο",
"Installer depuis une archive": "Εγκατάσταση από το αρχείο",
"Installer les données d'un module": "Εγκαταστήστε τα δεδομένα ενός πρόσθετου",
"Installer ou mettre à jour un module téléchargé": "Εγκατάσταση ή ενημέρωση μιας Κατεβασμένο Πρόσθετο",
"Installer un module": "Εγκαταστήστε ένα πρόσθετο",
"Installer un thème archivé (site ou administration)": "Εγκαταστήστε ένα αρχειοθετημένο θέμα (τοποθεσία ή διαχείριση)",
"Instructions JS ou jquery spécifiques à la page.": "Οδηγίες JS ή jquery για συγκεκριμένη σελίδα",
"Interface": "Διασύνδεση",
"Jeton invalide": "Μη έγκυρο token",
"Journal réinitialisé avec succès": "Το αρχείο καταγραφής μηδενίστηκε επιτυχώς",
"Journalisation": "ημερήσιας καταγραφής",
"L'archive a été déposée dans le gestionnaire de fichiers. Les archives inférieures à la version 9 ne sont pas acceptées.": "Το αρχείο έχει κατατεθεί στον διαχειριστή αρχείων. Αρχεία κάτω από την έκδοση 9 δεν γίνονται δεκτά.",
"L'identifiant est défini lors de la création du compte, il ne peut pas être modifié.": "Το αναγνωριστικό χρήστη ορίζεται κατά τη δημιουργία του προφίλ χρήστη και δεν μπορεί να αλλάξει.",
"La carte du site a été mise à jour": "Ο χάρτης του ιστότοπου έχει ενημερωθεί",
"La clé de l'API ne peut pas être vide": "Το κey API δεν μπορεί να είναι άδειο",
"La description d'une page participe à son référencement, chaque page doit disposer d'une description différente.": "Η περιγραφή μιας ιστοσελίδας συμβάλλει στην παραπομπή της, κάθε ιστοσελίδα πρέπει να έχει διαφορετική περιγραφή.",
"La page %s est ouverte par l'utilisateur %s": "Η σελίδα %s είναι ανοιχτή από τον χρήστη %s",
"La page demandée n'existe pas ou est introuvable (erreur 404)": "Η ζητούμενη σελίδα δεν υπάρχει ή δεν μπορεί να βρεθεί (σφάλμα 404)",
"La page est affichée dans un menu horizontal mais pas dans le menu vertical d'une barre latérale.": "Η σελίδα εμφανίζεται σε ένα οριζόντιο μενού αλλά όχι στο κάθετο μενού μιας πλευρικής μπάρας",
"La première page que vos visiteurs verront.": "Η πρώτη σελίδα που θα δουν οι επισκέπτες σας.",
"La règlementation française impose un anonymat de niveau 2": "Οι γαλλικοί κανονισμοί επιβάλλουν την ανωνυμία επιπέδου 2",
"La sauvegarde des fichiers peut prendre du temps. Continuer ?": "Η δημιουργία αντιγράφων ασφαλείας αρχείων ενδέχεται να διαρκέσει κάποιο χρόνο. Θέλετε να συνεχίσετε;",
"La suppression a échoué": "Η διαγραφή απέτυχε",
"La version installée est plus récente": "Η εγκατεστημένη έκδοση είναι πιο πρόσφατη",
"La vérification est quotidienne. Option désactivée si la configuration du serveur ne le permet pas.": "Ο έλεγχος είναι καθημερινός. Η επιλογή είναι απενεργοποιημένη εάν η διαμόρφωση του διακομιστή δεν το επιτρέπει.",
"Langue de l'administration": "Διοικητική γλώσσα",
"Langue du site sélectionnée": "Επιλεγμένη γλώσσα ιστότοπου",
"Langue par défaut": "Προεπιλεγμένη γλώσσα",
"Langues": "Γλώσσες",
"Langues disponibles": "Διαθέσιμες γλώσσες",
"Langues installées": "Εγκατεστημένες γλώσσες",
"Largeur de l'image :": "Πλάτος εικόνας",
"Le curseur horizontal règle le niveau de transparence, le placer tout à la gauche pour un surlignement invisible.": "Το οριζόντιο ρυθμιστικό ρυθμίζει το επίπεδο διαφάνειας, τοποθετώντας το στο άκρο αριστερά για αόρατη επισήμανση.",
"Le fuseau horaire est utile au bon référencement": "Η ζώνη ώρας είναι χρήσιμη για καλή αναφορά",
"Le menu accessoire est aligné à droite de la barre de menu, c'est un emplacement réservé aux drapeaux et au bouton de connexion.": "Το μενού αξεσουάρ είναι ευθυγραμμισμένο στα δεξιά της γραμμής μενού και είναι μια θέση που προορίζεται για τις σημαίες και το κουμπί σύνδεσης.",
"Le menu horizontal intégral": "Το πλήρες οριζόντιο μενού",
"Le module %s a été %s": "Το πρόσθετο %s έχει γίνει %s",
"Le module %s de la page %s a été supprimé": "Το πρόσθετο %s στη σελίδα %s έχει αφαιρεθεί",
"Le module %s est désinstallé, il reste peut-être des données dans %s": "Το πρόσθετο %s έχει απεγκατασταθεί, ενδέχεται να έχουν απομείνει δεδομένα στο %s",
"Le sous-menu de la page parente": "Το υπομενού της μητρικής σελίδας",
"Le survol d'une icône de l'écran de connexion affiche temporairement le mot de passe.": "Αν περάσετε το ποντίκι πάνω από ένα εικονίδιο στην οθόνη σύνδεσης, εμφανίζεται προσωρινά ο κωδικός πρόσβασης.",
"Le titre court est affiché dans les menus. Il peut être identique au titre de la page.": "Ο σύντομος τίτλος εμφανίζεται στα μενού. Μπορεί να είναι πανομοιότυπος με τον τίτλο της σελίδας",
"Les langues sélectionnées sont identiques": "Οι επιλεγμένες γλώσσες είναι ίδιες",
"Les mentions légales sont obligatoires en France. Une option du pied de page ajoute un lien discret vers cette page.": "τα Νομικά στοιχεία είναι υποχρεωτικές στη Γαλλία. Μια επιλογή υποσέλιδου προσθέτει έναν διακριτικό σύνδεσμο σε αυτή τη σελίδα.",
"Les modifications que vous avez apportées ne seront peut-être pas enregistrées.": "Οι αλλαγές που κάνατε ενδέχεται να μην αποθηκευτούν.",
"Lettres": "Γράμματα",
"Licence :": "Αδεια",
"Lien page des mentions légales.": "Σύνδεσμος προς τά νομικά στοιχεία",
"Liens": "σύνδεσμοι",
"Limitation des tentatives": "Περιορισμός προσπαθειών σύνδεσης",
"Linkedin": "Linkedin",
"Liste noire": "Μαύρη λίστα",
"Liste noire réinitialisée avec succès": "Επαναφορά μαύρης λίστας με επιτυχία",
"Lors d'une mise à jour automatique, conserve le fichier htaccess de la racine du site.": "Κατά τη διάρκεια μιας αυτόματης ενημέρωσης, διατηρεί το αρχείο htaccess της ρίζας του ιστότοπου.",
"Maintenance": "Συντήρηση",
"Masquer la page et les pages enfants dans le menu d'une barre latérale": "Απόκρυψη σελίδας και υποσελίδων σε ένα μενού πλευρικής μπάρας",
"Masquer les pages enfants dans le menu horizontal": "Απόκρυψη παιδικών σελίδων στο οριζόντιο μενού",
"Mentions légales": "Νομικά στοιχεία",
"Menu": "Μενού",
"Menu accessoire": "Προαιρετικό μενού",
"Menu standard": "Τυπικό μενού",
"Message d'acceptation des Cookies": "Μήνυμα αποδοχής cookies",
"Message de consentement aux cookies": "Μήνυμα συγκατάθεσης για cookies",
"Mettre à jour": "Ενημέρωση",
"Mettre à jour le module orphelin": "Ενημέρωση ορφανής Πρόσθετος",
"Mise en forme des titres": "Μορφοποίηση τίτλων",
"Mise en forme du texte": "Μορφοποίηση κειμένου",
"Mise en forme du titre": "Μορφοποίηση τίτλου",
"Mise en page": "Διάταξη ",
"Mise à jour": "Ενημέρωση",
"Mise à jour automatisée": "Αυτοματοποιημένη ενημέρωση",
"Mise à jour de ZwiiCMS": "Ενημέρωση ZwiiCMS",
"Mise à jour terminée avec succès.": "Η ενημέρωση ολοκληρώθηκε με επιτυχία",
"Modifications enregistrées": "Αποθηκευμένες αλλαγές",
"Module": "Πρόσθετο (Module)",
"Module de la page": "πρόσθετο σελίδας",
"Modules configurés": "προσθήκες ρυθμισμένες",
"Modules installés": "Εγκατεστημένες Πρόσθετα",
"Modules orphelins": "ορφανά πρόσθετα",
"Mot de passe": "Κωδικός πρόσβασης",
"Mot de passe oublié": "Ξεχάσατε τον κωδικό σας;",
"Multilingue": "Πολύγλωσσο",
"Méta-description": "Μετα- περιγραφή",
"Méta-titre": "Μετα-τίτλος",
"Ne pas afficher": "Να μην εμφανίζεται",
"Ne pas charger l'exemple de site (utilisateurs avancés)": "Να μην φορτώνεται δείγμα ιστότοπου (προχωρημένοι χρήστες)",
"Ne pas saisir les balises": "Μην εισάγετε ετικέτες",
"Niveau 1 (192.168.12.x)": "Επίπεδο 1",
"Niveau 2 (192.168.x.x)": "Επίπεδο 2",
"Niveau 3 (192.x.x.x)": "Επίπεδο 3",
"Nom": "Όνομα",
"Nom utilisateur": "Όνομα χρήστη",
"Non": "Όχι",
"Notre site est actuellement en maintenance. Nous sommes désolés pour la gêne occasionnée et faisons notre possible pour être rapidement de retour.": "Ο ιστότοπός μας υποβάλλεται επί του παρόντος σε συντήρηση. Ζητούμε συγγνώμη για την αναστάτωση και κάνουμε ό,τι μπορούμε για να επιστρέψουμε σύντομα.",
"Nouveau contenu localisé": "Νέο εντοπισμένο περιεχόμενο",
"Nouveau mot de passe": "Νέος κωδικός πρόσβασης",
"Nouveau mot de passe enregistré": "Νέος κωδικός πρόσβασης αποθηκευμένος",
"Nouvel utilisateur": "Καινούργιος χρήστης",
"Nouvelle page créée": "Δημιουργία νέας σελίδας",
"Nouvelle page ou barre latérale": "Νέα σελίδα ή sidebar",
"Option active en mode déconnecté uniquement, les pages enfants sont visibles et accessibles.": "Επιλογή ενεργή μόνο σε λειτουργία εκτός σύνδεσης, οι παιδικές σελίδες είναι ορατές και προσβάσιμες",
"Option recommandée pour sécuriser la connexion. S'applique à tous les captchas du site. Le captcha simple se limite à une addition de nombres de 0 à 10. Le captcha complexe utilise quatre opérations de nombres de 0 à 20. Activation recommandée.": "Synistómeni epilogí gia na asfalísete ti sýndesi. Ischýei gia óla ta captcha ston istótopo. I aplí captcha periorízetai se mia prosthíki arithmón apó to 0 éos to 10. Tο Πολύπλοκο Captcha chrisimopoieí tésseris leitourgíes arithmón apó to 0 éos to 20. ",
"Options avancées": "Προηγμένες επιλογές",
"Origine": "Προέλευση",
"Oui": "Ναί",
"Page": "Σελίδα",
"Page 2/3 - barre 1/3": "σελίδα 2/3 - πλευρική στήλη 1/3",
"Page 3/4 - barre 1/4": "σελίδα 3/4 - πλευρική στήλη 1/4",
"Page associée": "Συνδεδεμένη σελίδα",
"Page dupliquée": "Διπλή σελίδα",
"Page et module dupliqués": "Διπλή σελίδα και πρόσθετου",
"Page inexistante, erreur 404": "Η σελίδα δεν υπάρχει, σφάλμα 404",
"Page non cliquable": "Σελίδα χωρίς δυνατότητα κλικ",
"Page parent": "Σελίδα γονέα",
"Page standard": "Τυπική σελίδα",
"Page supprimée": "Σελίδα διαγράφηκε",
"Pages dans le menu": "Σελίδες στο μενού",
"Pages du site": "Ιστοσελίδες",
"Pages et les modules de": "Σελίδες και Πρόσθετα στο",
"Pages orphelines": "Ορφανές σελίδες",
"Papier peint": "Εικόνα φόντου",
"Par défaut le menu est affiché APRES le contenu de la page. Pour le positionner à un emplacement précis, insérez [MENU] dans le contenu de la page.": "Από προεπιλογή, το μενού εμφανίζεται ΜΕΤΑ το περιεχόμενο της σελίδας. Για να το τοποθετήσετε σε μια συγκεκριμένη θέση, εισαγάγετε το [MENU] στο περιεχόμενο της σελίδας.",
"Paramètres": "Παράμετροι",
"Paramètres de la localisation": "Ρυθμίσεις τοποθεσίας",
"Paramètres de la sauvegarde": "Ρυθμίσεις αντιγράφων ασφαλείας",
"Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d'envoi de mail.": "Ρυθμίσεις που πρέπει να χρησιμοποιείτε όταν ο πάροχος φιλοξενίας σας δεν προσφέρει τη δυνατότητα αποστολής μηνυμάτων.",
"Partage de fichiers autorisé": "Επιτρέπεται η κοινή χρήση αρχείων",
"Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.": "Θυμηθείτε να διαγράψετε την προσωρινή μνήμη του προγράμματος περιήγησής σας εάν το favicon δεν αλλάξει",
"Permission": "Άδεια",
"Permission et référencement": "Άδεια και αναφορά στο διαδίκτυο",
"Permissions :": "Πρόσβαση σε ιδιωτικές σελίδες",
"Pied de page": "Υποσέλιδο",
"Pinterest": "Pinterest",
"Plan du site": "Χάρτης ιστοσελίδας",
"Police des titres": "Γραμματοσειρά τίτλου",
"Police du texte": "Γραμματοσειρά κειμένου",
"Port SMTP": "Θύρα SMTP",
"Port du proxy": "θύρα διακομιστή μεσολάβησης",
"Position": "Θέση",
"Position du module": "Θέση του πρόσθετου",
"Pour définir la page comme barre latérale, choisissez l'option dans la liste.": "Για να ορίσετε τη σελίδα ως πλευρική μπάρα, επιλέξτε την επιλογή από τη λίστα.",
"Prénom": "επίθετο",
"Préparation de la mise à jour": "Προετοιμάστε την ενημέρωση",
"Préserver le fichier htaccess racine": "Διατηρήστε το αρχείο htaccess root",
"Préserver les comptes des utilisateurs déjà installés": "Διατήρηση των λογαριασμών των χρηστών που είναι ήδη εγκατεστημένοι",
"Prévenir l'utilisateur par mail": "Ειδοποιήστε τον χρήστη μέσω email",
"Pseudo": "Το ψευδώνυμο",
"Ratio :": "αναλογία",
"Recherche dans le site": "Αναζήτηση στον ιστότοπο",
"Rechercher": "Αναζήτηση",
"Rechercher une mise à jour en ligne": "Ελέγξτε για ενημέρωση online",
"Redirection vers la connexion": "Ανακατεύθυνση στη σύνδεση",
"Renseignez les champs ci-dessous pour finaliser l'installation.": "Συμπληρώστε τα παρακάτω πεδία για να ολοκληρώσετε την εγκατάσταση.",
"Restauration effectuée avec succès": "Η αποκατάσταση ολοκληρώθηκε με επιτυχία",
"Restaurer": "αποκατάσταση",
"Restaurer les données du site": "Επαναφορά δεδομένων ιστότοπου",
"Rester connecté sur ce navigateur": "Παραμονή συνδεδεμένου σε αυτό το Περιηγητής",
"Retour": "Επιστροφή",
"Rien à importer, erreur de format ou fichier incorrect": "Τίποτα για εισαγωγή, σφάλμα μορφοποίησης ή λανθασμένο αρχείο",
"Référencement": "Αναφορά στο διαδίκτυο",
"Réinitialisation du mot de passe": "Επαναφορά κωδικού πρόσβασης",
"Réinitialiser avec le thème par défaut": "Επαναφορά στο προεπιλεγμένο θέμα",
"Réinitialiser la feuille de style": "Επαναφορά του φύλλου στυλ css",
"Réinitialiser la liste": "Επαναφορά λίστας",
"Réinitialiser le journal": "Επαναφορά του αρχείου καταγραφής συμβάντων",
"Réinstaller": "Επανεγκατάσταση",
"Réseau": "δίκτυο",
"Réseaux sociaux": "Κοινωνικά δίκτυα",
"S'ouvre dans un nouvel onglet": "Ανοίγει σε νέα καρτέλα",
"SMTP": "SMTP",
"Saisir la clé, puis valider le formulaire avant de cliquer sur le bouton de génération": "Πληκτρολογήστε το κey και, στη συνέχεια, επικυρώστε τη φόρμα προτού κάνετε κλικ στο κουμπί δημιουργίας",
"Saisissez le Titre de gestion des cookies.": "Εισάγετε τον τίτλο του παραθύρου διαχείρισης cookies.",
"Saisissez le message pour les cookies déposés par ZwiiCMS, nécessaires au fonctionnement et qui ne nécessitent pas de consentement.": "Εισαγάγετε το μήνυμα για τα cookies που κατατέθηκαν από το ZwiiCMS, απαραίτητα για τη λειτουργία και τα οποία δεν απαιτούν συναίνεση.",
"Saisissez le texte du lien vers les mentions légales,la page doit être définie dans la configuration du site.": "Εισαγάγετε το κείμενο του συνδέσμου προς τά νομικά στοιχεία, η σελίδα πρέπει να οριστεί στη διαμόρφωση του ιστότοπου.",
"Saisissez votre ID : https://pinterest.com/[ID].": "Εισαγάγετε το αναγνωριστικό σας ID : https://pinterest.com/[ID].",
"Saisissez votre ID : https://twitter.com/[ID].": "Εισαγάγετε το αναγνωριστικό σας ID : https://twitter.com/[ID].",
"Saisissez votre ID : https://www.facebook.com/[ID].": "Εισαγάγετε το αναγνωριστικό σας ID : https://www.facebook.com/[ID] : https://www.facebook.com/[ID]",
"Saisissez votre ID : https://www.instagram.com/[ID].": "Εισαγάγετε το αναγνωριστικό σας ID : https://www.instagram.com/[ID]. : https://www.instagram.com/[ID].",
"Saisissez votre ID Github : https://github.com/[ID].": "Εισαγάγετε το αναγνωριστικό σας ID : https://github.com/[ID].",
"Saisissez votre ID Linkedin : https://fr.linkedin.com/in/[ID].": "Εισαγάγετε το αναγνωριστικό σας ID Linkedin : https://fr.linkedin.com/in/[ID].",
"Saisissez votre ID Utilisateur : https://www.youtube.com/user/[ID].": "Εισαγάγετε το αναγνωριστικό σας User ID : https://www.youtube.com/user/[ID].",
"Sauvegarde": "Αντιγράφων ασφαλείας",
"Sauvegarde automatique quotidienne du site": "Αυτόματη ημερήσια δημιουργία αντιγράφων ασφαλείας ιστότοπου",
"Sauvegarde du thème dans le": "Αποθήκευση του θέματος στο",
"Sauvegarde générée avec succès.": "Δημιουργία αντιγράφου ασφαλείας με επιτυχία.",
"Sauvegarder": "Αποθήκευση αλλαγών",
"Sauvegarder et télécharger le module": "Αποθηκεύστε και κατεβάστε την Πρόσθετο",
"Sauvegarder le module dans le gestionnaire de fichiers": "Αποθηκεύστε την το module στη διαχείριση αρχείων σας",
"Sauvegarder les données du module dans le gestionnaire de fichiers": "Αποθηκεύστε τα δεδομένα της Πρόσθετος στον διαχειριστή αρχείων",
"Sauvegarder les données du site": "αποθήκευση δεδομένων από τον ιστότοπο",
"Script dans body": "προσθέστε Script στο τμήμα body",
"Script dans head": "προσθέστε Script στο τμήμα head",
"Scripts externes": "Εξωτερικά Scripts ",
"Se déconnecter": "Αποσύνδεση",
"Service en ligne inaccessible": "Η online υπηρεσία δεν είναι διαθέσιμη",
"Seul un administrateur peut se connecter lors d'une maintenance": "Μόνο ένας διαχειριστής μπορεί να συνδεθεί κατά τη διάρκεια της συντήρησης",
"Si le contenu du gestionnaire de fichiers est très volumineux, mieux vaut une copie par FTP.": "άν τα περιεχόμενα του διαχειριστή αρχείων είναι πολύ μεγάλα, είναι προτιμότερο να τα αντιγράψετε μέσω FTP.",
"Signature": "Υπογραφή",
"Site": "Ιστότοπος",
"Site en maintenance": "Η τοποθεσία υπό συντήρηση",
"Suppression interdite": "Απαγορεύεται η διαγραφή",
"Suppression interdite, page active dans la configuration du site": "Απαγορεύεται η διαγραφή, η σελίδα είναι ενεργή στη διαμόρφωση της τοποθεσίας",
"Supprime le point d'interrogation dans les URL, l'option est indisponible avec les autres serveurs Web": "Καταργήστε το ερωτηματικό στις διευθύνσεις URL, η επιλογή δεν είναι διαθέσιμη με άλλους διακομιστές ιστού",
"Supprimer": "για διαγραφή",
"Supprimer la page": "Διαγραφή σελίδας",
"Supprimer le module": "Διαγράψτε την Πρόσθετο",
"Supprimer toutes les sauvegardes automatiques ?": "Θέλετε να διαγράψετε όλες τις αυτόματες αποθηκεύσεις;",
"Sécurité": "Ασφάλεια",
"Sécurité de la connexion": "Ασφάλεια σύνδεσης",
"Sécurité désactivée": "Απενεργοποιημένη ασφάλεια",
"Sélectionner un fichier": "Επιλέξτε ένα αρχείο",
"Sélectionnez au moins un contenu à afficher": "Επιλέξτε τουλάχιστον ένα περιεχόμενο που θα εμφανιστεί",
"Sélectionnez la langue à copier vers une langue cible": "Επιλέξτε γλώσσα για αντιγραφή σε γλώσσα-στόχο",
"Sélectionnez une icône adaptée à un thème sombre.<br>Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.": "Επιλέξτε ένα εικονίδιο κατάλληλο για ένα σκοτεινό θέμα.<br>Θυμηθείτε να διαγράψετε την προσωρινή μνήμη του προγράμματος περιήγησής σας εάν το favicon δεν αλλάξει.",
"Sélectionnez une image ou une icône de petite dimension": "Επιλέξτε μια μικρή εικόνα ή εικονίδιο",
"Sélectionnez une langue": "Επιλέξτε μια γλώσσα",
"Sélectionnez une page contenant le module 'Recherche'. Une option du pied de page ajoute un lien discret vers cette page.": "Επιλέξτε μια σελίδα που περιέχει τo module \"Αναζήτηση\". Μια επιλογή στο κάτω μέρος της σελίδας προσθέτει έναν διακριτικός σύνδεσμο προς αυτή τη σελίδα.",
"Séparateur": "Διαχωριστής",
"Taille": "Μέγεθος γραμματοσειράς",
"Texte": "Κείμενο",
"Thème": "Πρότυπο",
"Thème de l'administration": "Θέμα Διαχείρισης",
"Thème du site": "Θέμα ιστότοπου",
"Thème importé": "Εισαγόμενο θέμα",
"Thèmes": "Θέματα",
"Titre": "Τίτλος",
"Titre court": "Σύντομος τίτλος",
"Titre masqué dans la page": "Τίτλος κρυμμένος στη σελίδα",
"Titres": "Τίτλοι",
"Traduction supprimée": "Μετάφραση διαγράφεται",
"Twitter": "Twitter",
"Type de captcha": "τύπος captcha",
"Type de proxy": "διακομιστής μεσολάβησης ",
"Téléchargement et validation de l'archive": "Λήψη και επικύρωση του αρχείου",
"Télécharger": "Λήψη θέματος",
"Télécharger la liste": "Κατεβάστε τη λίστα",
"Télécharger le journal": "Κατεβάστε το περιοδικό",
"Télécharger le module dans le gestionnaire de fichiers": "Λήψη μιας Πρόσθετος στη διαχείριση αρχείων",
"URL incorrecte": "Μη έγκυρη διεύθυνση URL",
"Un mail a été envoyé pour confirmer la réinitialisation": "Ένα email εστάλη για να επιβεβαιώσει την επαναφορά",
"Une archive du dossier /site/data est conservée pendant 30 jours. Activation recommandée": "Διατηρείται αρχείο του φακέλου /site/data για 30 ημέρες. Συνιστάται ενεργοποίηση",
"Une erreur est survenue lors de l'étape :": "Εμφανίστηκε σφάλμα στο βήμα",
"Url du fichier de fonte": "URL αρχείου γραμματοσειράς",
"Utilisateur inexistant": "Μη υπαρκτός χρήστης",
"Utilisateur supprimé": "Διαγραμμένος χρήστης",
"Utilisateurs": "Οι χρήστες",
"Valider": "Επικύρωση",
"Vers": "Προς το",
"Version": "Έκδοση",
"Version n°": "Έκδοση αριθ.",
"Vider dossier sauvegardes auto": "Αδειάστε το φάκελο αυτόματο αντίγραφο ασφαλείας",
"Vous n'êtes pas autorisé à consulter cette page (erreur 403)": "Δεν είστε εξουσιοδοτημένοι να προβάλετε αυτήν τη σελίδα (σφάλμα 403)",
"Youtube": "Youtube",
"actualisé": "ενημερωμένο",
"favicon.ico": "εικονίδιο αγαπημένων (favicon.ico)",
"faviconDark.ico": "faviconDark.ico",
"gestionnaire de fichiers": "Διαχείριση αρχείων",
"installé": "εγκατεστημένο",
"largeur de site :": "πλάτος ιστότοπου",
"largeur du site": "πλάτος ιστότοπου",
"sauvegardé avec succès": "αποθηκεύτηκε επιτυχώς",
"vers": "προς",
"vers ZwiiCMS": "προς το ZwiiCMS",
"À l'emplacement du mot clé [MODULE] dans la page": "Στη θέση της λέξης-κλειδί [MODULE] στη σελίδα",
"Échecs": "Αποτυχίες",
"Éditer": "Επεξεργασία κειμένου",
"Éditer la page": "Επεξεργασία σελίδας",
"Éditer les dialogues": "Επεξεργασία διαλόγων",
"Éditeur CSS": "Εκδότης CSS",
"Éditeur JS": "Εκδότης JS",
"Éditeur de script %s": "Συντάκτης του script %s",
"Éditeur de script dans Body": "Επεξεργαστής script στο Body",
"Éditeur de script dans Head": "Επεξεργαστής script στο Head",
"Étiquettes des pages spéciales": "Ειδικές ετικέτες σελίδων"
}

View File

@ -1,498 +0,0 @@
{
"'Ne pas afficher' crée une page orpheline non accessible par le biais des menus.": "'Non mostrare' crea una pagina orfana a cui non si può accedere tramite i menu",
"'Sauvegarder et télécharger les données du module": "Salva e scarica i dati del modulo",
"1/4 : Préparation...": "1/4 : Preparazione...",
"10 minutes": "10 minuti",
"10 tentatives": "10 tentativi",
"15 minutes": "15 minuti",
"2/4 : Téléchargement...": "2/4 : Download...",
"3 tentatives": "3 tentativi",
"3/4 : Installation...": "3/4: Installazione...",
"4/4 : Configuration...": "4/4 : Configurazione...",
"5 minutes": "5 minuti",
"5 tentatives": "5 tentativi",
"Accueil": "Casa",
"Accès aux pages privées": "Accesso alle pagine private",
"Accès bloqué %d minutes": "Accesso bloccato per %d minuti",
"Accès interdit, erreur 403": "Accesso negato, errore 403",
"Action interdite": "Azione vietata",
"Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.": "Attivazione obbligatoria secondo le leggi francesi, a meno che non si utilizzi il proprio sistema di consenso.",
"Activer": "Attivare",
"Activer SMTP": "Attivare SMTP",
"Activer la journalisation": "Abilita la registrazione",
"Actualiser": "Aggiornamento",
"Administration": "Amministrazione",
"Administration complète du site": "Amministrazione completa del sito",
"Adresse SMTP": "Indirizzo SMTP",
"Adresse du proxy": "Indirizzo proxy",
"Adresse électronique": "Indirizzo e-mail",
"Affectation": "Assegnazione",
"Affiche le nom de la page parente suivi du nom de la page, le titre ne doit pas être masqué.": "Visualizza il nome della pagina madre seguito dal nome della pagina; il titolo non deve essere nascosto",
"Afin d'assurer le bon fonctionnement de Zwii, veuillez ne pas fermer cette page avant la fin de l'opération.": "Per garantire il corretto funzionamento di Zwii, non chiudere questa pagina fino al completamento dell'operazione.",
"Aide": "Aiuto",
"Ajout - Édition - Suppression de fichiers": "Aggiungi - Modifica - Elimina file",
"Ajout - Édition - Suppression de pages": "Aggiungere - Modificare - Cancellare pagine",
"Ajouter un utilisateur": "Aggiungere utente",
"Ajouter une fonte": "Aggiungi un carattere",
"Ancien mot de passe": "Password precedente",
"Anonymat des adresses IP": "Anonimato degli indirizzi IP",
"Apache URL intelligent": "Apache URL smart",
"Apache URL intelligentes": "Apache Smart URLs",
"Apparence": "Aspetto",
"Appliquer": "Applicare",
"Après": "Dopo",
"Après le contenu de la page": "Dopo il contenuto della pagina",
"Archive": "Archivio",
"Archive ZIP": "Archivio ZIP",
"Archive copiée dans le dossier Modules du gestionnaire de fichier": "Archivio copiato nella cartella Modulo del file manager.",
"Archive de thème invalide": "Archivio tema non valido",
"Archive invalide": "Archivio non valido",
"Archive invalide, l'écriture dans le dossier core est interdite": "Archivio non valido, la scrittura nella cartella core non è consentita",
"Archive invalide, le descripteur est absent": "Archivio non valido, manca il descrittore",
"Archive invalide, le fichier de classe est absent": "Archivio non valido, manca il file di classe.",
"Archive invalide, les dossiers ne correspondent pas au descripteur": "Archivio non valido, le cartelle non corrispondono al descrittore",
"Archive non spécifiée ou introuvable": "Archivio non specificato o non trovato",
"Archive à restaurer": "Archivio da ripristinare",
"Arrière plan": "Sfondo",
"Arrière plan des blocs": "Sfondo dei blocchi",
"Arrière plan des champs": "Sfondo dei campi",
"Au début": "All'inizio",
"Aucun fichier journal à télécharger": "Nessun file di log da scaricare",
"Aucun journal à effacer": "Nessun registro da eliminare",
"Aucun menu": "Nessun menu",
"Aucune liste noire à effacer": "Nessuna lista nera da cancellare",
"Aucune liste noire à télécharger": "Nessuna lista nera da scaricare",
"Auteur :": "Autore:",
"Authentification": "Autenticazione",
"Autoriser les robots à référencer le site": "Consentire ai robot di fare riferimento al sito",
"Avant le contenu de la page": "Prima del contenuto della pagina",
"Bannière": "Banner",
"Barre 1/3 - page 2/3": "Barra 1/3 - pagina 2/3",
"Barre 1/4 - page 1/2 - barre 1/4": "Barra 1/4 - pagina 1/2 - barra 1/4",
"Barre 1/4 - page 3/4": "Barra 1/4 - pagina 3/4",
"Barre 2/12 - page 7/12 - barre 3/12": "Barra 2/12 - pagina 7/12 - barra 3/12",
"Barre 3/12 - page 7/12 - barre 2/12": "Barra 3/12 - pagina 7/12 - barra 2/12",
"Barre latérale": "Barra laterale",
"Barre latérale droite :": "Barra laterale destra:",
"Barre latérale gauche :": "Barra laterale sinistra:",
"Barres latérales": "Barre laterali",
"Bienvenue %s %s": "Benvenuto %s %s",
"Blocage après échecs": "Blocco dopo i fallimenti",
"Bordure des blocs": "Confini dei blocchi",
"Bordure des champs": "Bordo campo",
"Bouton Aide": "Pulsante di aiuto",
"Bouton Standard": "Pulsante standard",
"Bouton de validation": "Pulsante di convalida",
"Bouton effacement": "Pulsante di cancellazione",
"Bouton retour": "Pulsante posteriore",
"Bouton standard": "Pulsante standard",
"Bouton validation": "Pulsante di convalida",
"Boutons": "Pulsanti",
"Captcha complexe": "captcha complesso",
"Captcha à la connexion": "Captcha al login",
"Captcha, identifiant ou mot de passe incorrects": "Captcha, nome utente o password non corretti",
"Capture d'écran Open Graph": "Schermata Open Graph",
"Capture d'écran générée avec succès": "Screenshot generato con successo",
"Catalogue": "Gestisci",
"Catégorie": "Categoria",
"Ce membre pourra téléverser ou télécharger des fichiers dans le dossier 'partage' et ses sous-dossiers": "Questo membro potrà caricare o scaricare file nella cartella 'share' e nelle sue sottocartelle",
"Cette page ne doit pas apparaître dans l'arborescence du menu. Créez une page orpheline.": "Questa pagina non dovrebbe apparire nell'albero dei menu. Creare una pagina orfana",
"Cette redirection ne concerne que les pages d'administration du site.": "Questo reindirizzamento è solo per le pagine di amministrazione del sito",
"Chaîne Youtube": "Canale Youtube",
"Chiffres": "Numeri",
"Clé de l'API <a href=\"https://app.screenshotapi.net/\" target=\"_blank\">ScreenShotApi</a>": "Chiave API<a href=\"https://app.screenshotapi.net/\" target=\"_blank\">ScreenShotApi</a>",
"Clé de l'API <a href='https://app.screenshotapi.net/' target='_blank'>ScreenShotApi</a>": "Chiave API <a href='https://app.screenshotapi.net/' target='_blank'>ScreenShotApi</a>",
"Complète": "Completo",
"Compte administrateur": "Account amministratore",
"Compte verrouillé": "Account bloccato",
"Configuration": "Configurazione",
"Configuration du module": "Configurazione del modulo",
"Configurer mon compte": "Configurare il mio account",
"Confirmation": "Conferma",
"Confirmer la suppression de cet utilisateur": "Confermare la cancellazione di questo utente",
"Confirmer la dissociation du module de cette page": "Confermare la dissociazione del modulo da questa pagina",
"Confirmer la désinstallation du module": "Confermare la disinstallazione del modulo",
"Confirmer la suppression de la page": "Confermare la cancellazione della pagina",
"Confirmer la suppression des données du module": "Confermare la cancellazione dei dati del modulo",
"Confirmez-vous la suppression de cette page ?": "Confermi la cancellazione di questa pagina?",
"Connexion": "Login",
"Consulter l'aide en ligne": "Consultare la guida in linea",
"Contenu": "Contenuto",
"Contenu avancé": "Contenuto avanzato",
"Contenu du menu vertical": "Contenuto del menu verticale",
"Contenu personnalisé": "Contenuto personalizzato",
"Cookies": "Cookies",
"Cookies Zwii": "Zwii Cookies",
"Copie de contenus localisés": "Copia del contenuto localizzato",
"Copie de sites inter-langues": "Copia di siti in più lingue",
"Copie des traductions rédigées": "Copia di traduzioni scritte",
"Copie terminée avec des erreurs": "Copia completata con errori",
"Copie terminée avec succès": "Copia completata con successo",
"Copier sauvegardes auto": "Copia dei backup automatici",
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence.": "Colore visibile senza immagine. Il cursore orizzontale imposta il livello di trasparenza",
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence. La couleur du texte est automatique.": "Colore visibile senza immagine. Il cursore orizzontale imposta il livello di trasparenza. Il colore del testo è automatico",
"Couleurs": "Colori",
"Créez un compte gratuit, recopier la clé , puis valider le formulaire avant de cliquer sur le bouton de génération": "Creare un account gratuito, copiare la chiave, quindi convalidare il modulo prima di fare clic sul pulsante genera",
"Dans quelle langue utiliserez-vous Zwii ?": "In quale lingua utilizzerete Zwii?",
"Date": "Data",
"De": "Da",
"Description": "Descrizione del sito",
"Disposition": "Layout",
"Données %s copiées vers %s": "Dati %s copiati in %s",
"Données des modules": "Dati dei moduli",
"Données importées": "Dati importati",
"Du": "Da",
"Dupliquer la page": "Duplicare la pagina",
"Déconnecte les sessions ouvertes précédemment sur d'autres navigateurs ou terminaux. Activation recommandée.": "Disconnette le sessioni precedentemente aperte su altri browser o terminali. Consigliata l'abilitazione",
"Déconnecter": "Disconnessione",
"Déconnexion !": "Logout!",
"Déconnexion automatique": "Auto Logout",
"Dévoiler le mot de passe": "Svelare il password",
"Echec de l'écriture, vérifiez les permissions": "Scrittura fallita, controllare i permessi",
"Effacer la page": "Cancella pagina",
"Emplacement :": "Posizione:",
"Emplacement dans le menu": "Posizione nel menu",
"En cas de changement de module, les données du module précédent seront supprimées.": "Quando si cambia il modulo, i dati del modulo precedente vengono cancellati.",
"En position libre ajoutez le module en plaçant [MODULE] à l'endroit voulu dans votre page.": "In posizione libera aggiungere il modulo posizionando [MODULO] nel punto desiderato della pagina.",
"Enregistrer": "Salva",
"Envoyer un message de confirmation": "Invia messaggio di conferma",
"Erreur : sauvegarde non générée !": "Errore: backup non generato!",
"Erreur d'URL": "Errore URL",
"Erreur d'extraction, vérifiez les permissions": "Errore di estrazione, controllare le autorizzazioni",
"Erreur de copie": "Errore di copia",
"Erreur de copie, vérifiez les permissions": "Errore di copia, controllare le autorizzazioni",
"Erreur de lecture, vérifiez les permissions": "Errore di lettura, controllare le autorizzazioni",
"Erreur inconnue": "Errore sconosciuto",
"Erreur inconnue, le module n'est pas installé": "Errore sconosciuto, modulo non installato",
"Extension": "Estensione",
"Facebook": "Facebook",
"Famille": "Famiglia",
"Favicon thème sombre": "Favicon tema scuro",
"Feuille de style spécifique à la page.": "Foglio di stile specifico della pagina.",
"Fichiers effacés": "File eliminati",
"Fil d'Ariane dans le titre": "Breadcrumb nel titolo",
"Fond du sous-menu": "Sfondo del sottomenu",
"FontId": "FontId",
"Fonte actualisée": "Font aggiornato",
"Fonte créée": "Font creato",
"Fonte en ligne": "Font online",
"Fonte installée": "Font installata",
"Fonte non créée, ressource absente !": "Font non creato, risorsa non presente!",
"Fonte supprimée": "Font cancellato",
"Fontes": "Caratteri",
"Format incorrect": "Formato non corretto",
"Fuseau horaire": "Fuso orario",
"Gabarits de page - Barre latérale": "Modelli di pagina - Barra laterale",
"Gestion": "Gestione",
"Gestion des modules": "Gestione dei moduli",
"Gestion des thèmes": "Gestione del tema",
"Github": "Github",
"Groupe": "Gruppo",
"Groupe requis pour accéder à la page :": "Gruppo richiesto per accedere alla pagina:",
"Générer sitemap.xml et robots.txt": "Generare sitemap.xml e robots.txt",
"Générer une capture Open Graph": "Generare l'acquisizione di Open Graph",
"Gérer les fichiers": "Gestione dei file",
"Gérer les modules": "Gestisci moduli",
"Hauteur de l'image :": "Altezza immagine:",
"ID de la chaîne : https://www.youtube.com/channel/[ID].": "ID del canale: https://www.youtube.com/channel/[ID].",
"Icône": "Icona",
"Icône avec bulle de texte": "Icona con bolla di testo",
"Identifiant": "Nome utente",
"Identifiant (sans espace ni majuscule)": "Identificatore (senza spazi o lettere maiuscole)",
"Identité": "Identità",
"Identité de la fonte": "Identità del carattere",
"Identité du site": "Identità del sito",
"Il apparaît dans la barre de titre et les partages sur les réseaux sociaux.": "Appare nella barra del titolo e viene condiviso sui social network",
"Image": "Immagine",
"Importation d'utilisateurs": "Importazione di utenti",
"Importation de fichier plat CSV": "Importazione di un file piatto CSV",
"Importation effectuée": "Importazione completata",
"Importer": "Importazione",
"Importer dans": "Importazione in",
"Importer des utilisateurs en masse": "Importazione di utenti in blocco",
"Impossible d'ouvrir l'archive": "Impossibile aprire l'archivio",
"Impossible de modifier votre propre groupe.": "Impossibile modificare il proprio gruppo",
"Impossible de supprimer une page contenant des pages enfants": "Impossibile cancellare una pagina contenente pagine figlio",
"Impossible de supprimer votre propre compte": "Impossibile eliminare il proprio account",
"Inclure le contenu du gestionnaire de fichiers": "Includi il contenuto del gestore del sito",
"Incorrect": "Non corretto",
"Informations": "Informazioni",
"Instagram": "Instagram",
"Installation": "Installazione",
"Installation terminée": "Installazione completata",
"Installer": "Installa",
"Installer depuis le catalogue en ligne": "Installa dal catalogo online",
"Installer depuis une archive": "Installa da archivio",
"Installer les données d'un module": "Installazione di dati da un modulo",
"Installer ou mettre à jour un module téléchargé": "Installare o aggiornare un modulo scaricato",
"Installer un module": "Installare un modulo",
"Installer un thème archivé (site ou administration)": "Installa il tema archiviato (sito o amministrazione)",
"Instructions JS ou jquery spécifiques à la page.": "Istruzioni JS o jquery specifiche della pagina.",
"Interface": "Interfaccia",
"Jeton invalide": "Token non valido",
"Journal réinitialisé avec succès": "Registro resettato con successo",
"Journalisation": "Registrazione",
"L'archive a été déposée dans le gestionnaire de fichiers. Les archives inférieures à la version 9 ne sont pas acceptées.": "L'archivio è stato scaricato nel file manager. Gli archivi inferiori alla versione 9 non sono accettati.",
"L'identifiant est défini lors de la création du compte, il ne peut pas être modifié.": "Il nome utente viene impostato alla creazione dell'account, non può essere modificato",
"La carte du site a été mise à jour": "La mappa del sito è stata aggiornata",
"La clé de l'API ne peut pas être vide": "La chiave API non può essere vuota",
"La description d'une page participe à son référencement, chaque page doit disposer d'une description différente.": "La descrizione di una pagina contribuisce alla sua referenziazione; ogni pagina deve avere una descrizione diversa.",
"La page %s est ouverte par l'utilisateur %s": "La pagina %s è stata aperta dall'utente %s",
"La page demandée n'existe pas ou est introuvable (erreur 404)": "La pagina richiesta non esiste o non può essere trovata (errore 404)",
"La page est affichée dans un menu horizontal mais pas dans le menu vertical d'une barre latérale.": "La pagina viene visualizzata in un menu orizzontale ma non nel menu verticale di una barra laterale.",
"La première page que vos visiteurs verront.": "La prima pagina che i visitatori vedranno",
"La règlementation française impose un anonymat de niveau 2": "La legge francese richiede l'anonimato di livello 2",
"La sauvegarde des fichiers peut prendre du temps. Continuer ?": "Il backup dei file può richiedere del tempo. Continuare?",
"La suppression a échoué": "Cancellazione fallita",
"La version installée est plus récente": "La versione installata è più recente.",
"La vérification est quotidienne. Option désactivée si la configuration du serveur ne le permet pas.": "La verifica è quotidiana. Disattivato se la configurazione del server non lo consente.",
"Langue de l'administration": "Lingua dell'amministrazione",
"Langue du site sélectionnée": "Lingua del sito selezionata",
"Langue par défaut": "Lingua predefinita",
"Langues": "Lingue",
"Langues disponibles": "Lingue disponibili",
"Langues installées": "Lingue installate",
"Largeur de l'image :": "Larghezza immagine :",
"Le curseur horizontal règle le niveau de transparence, le placer tout à la gauche pour un surlignement invisible.": "Il cursore orizzontale regola il livello di trasparenza; posizionarlo all'estrema sinistra per ottenere un'evidenziazione invisibile",
"Le fuseau horaire est utile au bon référencement": "Il fuso orario è utile per una buona SEO.",
"Le menu accessoire est aligné à droite de la barre de menu, c'est un emplacement réservé aux drapeaux et au bouton de connexion.": "Il menu accessorio è allineato a destra della barra dei menu, è un segnaposto per le bandiere e il pulsante di accesso.",
"Le menu horizontal intégral": "Il menu orizzontale completo",
"Le module %s a été %s": "Il modulo %s è stato %s",
"Le module %s de la page %s a été supprimé": "Il modulo %s a pagina %s è stato cancellato",
"Le module %s est désinstallé, il reste peut-être des données dans %s": "Il modulo %s è stato disinstallato, potrebbero essere rimasti dei dati in %s",
"Le sous-menu de la page parente": "Il sottomenu della pagina madre",
"Le survol d'une icône de l'écran de connexion affiche temporairement le mot de passe.": "Passando il mouse su un'icona nella schermata di accesso si visualizza temporaneamente la password",
"Le titre court est affiché dans les menus. Il peut être identique au titre de la page.": "Il titolo breve viene visualizzato nei menu. Può essere identico al titolo della pagina",
"Les langues sélectionnées sont identiques": "Le lingue selezionate sono identiche",
"Les mentions légales sont obligatoires en France. Une option du pied de page ajoute un lien discret vers cette page.": "Le comunicazioni legali sono obbligatorie in Francia. Un'opzione a piè di pagina aggiunge un link discreto a questa pagina",
"Les modifications que vous avez apportées ne seront peut-être pas enregistrées.": "Le modifiche apportate potrebbero non essere salvate",
"Lettres": "Lettere",
"Licence :": "Licenza:",
"Lien page des mentions légales.": "Link alla pagina delle note legali.",
"Liens": "Link",
"Limitation des tentatives": "Limitazione dei tentativi",
"Linkedin": "Linkedin",
"Liste noire": "Liste nera",
"Liste noire réinitialisée avec succès": "Lista nera resettata con successo",
"Lors d'une mise à jour automatique, conserve le fichier htaccess de la racine du site.": "Durante un aggiornamento automatico, conserva il file htaccess principale del sito.",
"Maintenance": "Manutenzione",
"Masquer la page et les pages enfants dans le menu d'une barre latérale": "Nascondi pagina e pagine figlio in un menu della barra laterale",
"Masquer les pages enfants dans le menu horizontal": "Nascondi le pagine figlio nel menu orizzontale",
"Mentions légales": "Avviso legale",
"Menu": "Menu",
"Menu accessoire": "Menu accessorio",
"Menu standard": "Menu standard",
"Message d'acceptation des Cookies": "Messaggio di accettazione dei cookie",
"Message de consentement aux cookies": "Messaggio di consenso ai cookie",
"Mettre à jour": "Aggiornamento",
"Mettre à jour le module orphelin": "Aggiornamento del modulo orfano",
"Mise en forme des titres": "Formattazione dei titoli",
"Mise en forme du texte": "Formattazione del testo",
"Mise en forme du titre": "Formattazione del titolo",
"Mise en page": "Layout",
"Mise à jour": "Aggiornamento",
"Mise à jour automatisée": "Aggiornamento automatico",
"Mise à jour de ZwiiCMS": "Aggiornare ZwiiCMS",
"Mise à jour terminée avec succès.": "Aggiornamento completato con successo.",
"Modifications enregistrées": "Modifiche salvate",
"Module": "Modulo",
"Module de la page": "Modulo pagina",
"Modules configurés": "Moduli configurati",
"Modules installés": "Moduli installati",
"Modules orphelins": "Moduli orfani",
"Mot de passe": "Password",
"Mot de passe oublié": "Password dimenticata",
"Multilingue": "Multilingua",
"Méta-description": "Meta descrizione",
"Méta-titre": "Meta titolo",
"Ne pas afficher": "Non visualizzare",
"Ne pas charger l'exemple de site (utilisateurs avancés)": "Non caricare il sito di esempio (utenti avanzati)",
"Ne pas saisir les balises": "Non inserire i tag",
"Niveau 1 (192.168.12.x)": "Livello 1 (192.168.12.x)",
"Niveau 2 (192.168.x.x)": "Livello 2 (192.168.x.x)",
"Niveau 3 (192.x.x.x)": "Livello 3 (192.x.x.x)",
"Nom": "Cognome",
"Nom utilisateur": "Nome utente",
"Non": "No",
"Notre site est actuellement en maintenance. Nous sommes désolés pour la gêne occasionnée et faisons notre possible pour être rapidement de retour.": "Il nostro sito è attualmente in manutenzione. Ci scusiamo per l'inconveniente e stiamo facendo del nostro meglio per tornare presto",
"Nouveau contenu localisé": "Nuovo contenuto localizzato",
"Nouveau mot de passe": "Nuova password",
"Nouveau mot de passe enregistré": "Nuova password salvata",
"Nouvel utilisateur": "Nuovo utente",
"Nouvelle page créée": "Nuova pagina creata",
"Nouvelle page ou barre latérale": "Nuova pagina o barra laterale",
"Option active en mode déconnecté uniquement, les pages enfants sont visibles et accessibles.": "Opzione attiva solo in modalità offline, le pagine dei bambini sono visibili e accessibili",
"Option recommandée pour sécuriser la connexion. S'applique à tous les captchas du site. Le captcha simple se limite à une addition de nombres de 0 à 10. Le captcha complexe utilise quatre opérations de nombres de 0 à 20. Activation recommandée.": "Opzione consigliata per proteggere la connessione. Si applica a tutti i captchas del sito. Il captcha semplice si limita all'aggiunta di numeri da 0 a 10. Il captcha complesso utilizza quattro operazioni su numeri da 0 a 20. Attivazione consigliata.",
"Options avancées": "Opzioni avanzate",
"Origine": "Origine",
"Oui": "Sì",
"Page": "Pagina",
"Page 2/3 - barre 1/3": "Pagina 2/3 - barra 1/3",
"Page 3/4 - barre 1/4": "Pagina 3/4 - barra 1/4",
"Page associée": "Pagina correlata",
"Page dupliquée": "Pagina duplicata",
"Page et module dupliqués": "Pagina e modulo duplicati",
"Page inexistante, erreur 404": "La pagina non esiste, errore 404",
"Page non cliquable": "Pagina non cliccabile",
"Page parent": "Pagina madre",
"Page standard": "Pagina standard",
"Page supprimée": "Pagina eliminata",
"Pages dans le menu": "Pagine nel menu",
"Pages du site": "Pagine del sito",
"Pages et les modules de": "Pagine e moduli di",
"Pages orphelines": "Pagine orfane",
"Papier peint": "Sfondo",
"Par défaut le menu est affiché APRES le contenu de la page. Pour le positionner à un emplacement précis, insérez [MENU] dans le contenu de la page.": "Per impostazione predefinita, il menu viene visualizzato DOPO il contenuto della pagina. Per posizionarlo in una posizione specifica, inserire [MENU] nel contenuto della pagina.",
"Paramètres": "Impostazioni",
"Paramètres de la localisation": "Impostazioni di posizione",
"Paramètres de la sauvegarde": "Impostazioni di backup",
"Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d'envoi de mail.": "Impostazioni da utilizzare quando l'host non offre la funzionalità di invio della posta.",
"Partage de fichiers autorisé": "Condivisione di file consentita",
"Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.": "Considerate di cancellare la cache del browser se la favicon non cambia",
"Permission": "Autorizzazione",
"Permission et référencement": "Permessi e riferimenti",
"Permissions :": "Autorizzazioni:",
"Pied de page": "Piè di pagina",
"Pinterest": "Pinterest",
"Plan du site": "Mappa del sito",
"Police des titres": "Font del titolo",
"Police du texte": "Font di testo",
"Port SMTP": "Porta SMTP",
"Port du proxy": "Porta proxy",
"Position": "Posizione",
"Position du module": "Posizione del modulo",
"Pour définir la page comme barre latérale, choisissez l'option dans la liste.": "Per impostare la pagina come barra laterale, scegliere l'opzione dall'elenco.",
"Prénom": "Nome",
"Préparation de la mise à jour": "Preparazione dell'aggiornamento",
"Préserver le fichier htaccess racine": "Conserva il file htaccess principale",
"Préserver les comptes des utilisateurs déjà installés": "Conserva gli account utente già installati",
"Prévenir l'utilisateur par mail": "Notifica all'utente via e-mail",
"Pseudo": "Nickname",
"Ratio :": "Rapporto :",
"Recherche dans le site": "Cerca nel sito",
"Rechercher": "Ricerca",
"Rechercher une mise à jour en ligne": "Cercare un aggiornamento online",
"Redirection vers la connexion": "Reindirizzamento al login",
"Renseignez les champs ci-dessous pour finaliser l'installation.": "Compilare i campi sottostanti per completare l'installazione.",
"Restauration effectuée avec succès": "Ripristino completato con successo",
"Restaurer": "Ripristino",
"Restaurer les données du site": "Ripristino dei dati del sito",
"Rester connecté sur ce navigateur": "Rimani connesso su questo browser",
"Retour": "Indietro",
"Rien à importer, erreur de format ou fichier incorrect": "Niente da importare, errore di formato o file non corretto",
"Référencement": "Referenziamento",
"Réinitialisation du mot de passe": "Reimpostare la password",
"Réinitialiser avec le thème par défaut": "Reimpostare il tema predefinito",
"Réinitialiser la feuille de style": "Reimpostare il foglio di stile",
"Réinitialiser la liste": "Reset del elenco",
"Réinitialiser le journal": "Registrazione reset",
"Réinstaller": "Reinstallare",
"Réseau": "Rete",
"Réseaux sociaux": "Reti sociali",
"S'ouvre dans un nouvel onglet": "Si apre in una nuova scheda",
"SMTP": "SMTP",
"Saisir la clé, puis valider le formulaire avant de cliquer sur le bouton de génération": "Inserire la chiave, quindi convalidare il modulo prima di fare clic sul pulsante di generazione",
"Saisissez le Titre de gestion des cookies.": "Inserire il titolo della finestra di gestione dei cookie",
"Saisissez le message pour les cookies déposés par ZwiiCMS, nécessaires au fonctionnement et qui ne nécessitent pas de consentement.": "Inserire il messaggio per i cookie depositati da ZwiiCMS, che sono necessari per il funzionamento e non richiedono consenso.",
"Saisissez le texte du lien vers les mentions légales,la page doit être définie dans la configuration du site.": "Inserire il testo del link alla nota legale; la pagina deve essere definita nella configurazione del sito.",
"Saisissez votre ID : https://pinterest.com/[ID].": "Inserire il proprio ID: https://pinterest.com/[ID].",
"Saisissez votre ID : https://twitter.com/[ID].": "Inserire il proprio ID: https://twitter.com/[ID].",
"Saisissez votre ID : https://www.facebook.com/[ID].": "Inserire il proprio ID: https://www.facebook.com/[ID].",
"Saisissez votre ID : https://www.instagram.com/[ID].": "Inserire il proprio ID: https://www.instagram.com/[ID].",
"Saisissez votre ID Github : https://github.com/[ID].": "Inserire il proprio ID Github: https://github.com/[ID].",
"Saisissez votre ID Linkedin : https://fr.linkedin.com/in/[ID].": "Inserire il proprio ID Linkedin: https://fr.linkedin.com/in/[ID].",
"Saisissez votre ID Utilisateur : https://www.youtube.com/user/[ID].": "Inserire il proprio ID: https://www.youtube.com/user/[ID].",
"Sauvegarde": "Backup",
"Sauvegarde automatique quotidienne du site": "Backup automatico giornaliero del sito",
"Sauvegarde du thème dans le": "Salva tema nel",
"Sauvegarde générée avec succès.": "Backup generato con successo",
"Sauvegarder": "Salva",
"Sauvegarder et télécharger le module": "Salva e scarica il modulo",
"Sauvegarder le module dans le gestionnaire de fichiers": "Salva il modulo nel file manager",
"Sauvegarder les données du module dans le gestionnaire de fichiers": "Salva i dati del modulo nel file manager",
"Sauvegarder les données du site": "Salva i dati del sito",
"Script dans body": "Script nel corpo",
"Script dans head": "Scrittura in testa",
"Scripts externes": "Script esterni",
"Se déconnecter": "Log out",
"Service en ligne inaccessible": "Servizio online inaccessibile",
"Seul un administrateur peut se connecter lors d'une maintenance": "Solo un amministratore può accedere durante la manutenzione",
"Si le contenu du gestionnaire de fichiers est très volumineux, mieux vaut une copie par FTP.": "Se il contenuto del file manager è molto grande, meglio copiare via FTP",
"Signature": "Firma",
"Site": "Sito",
"Site en maintenance": "Sito in mantenimento",
"Suppression interdite": "Cancellazione vietata",
"Suppression interdite, page active dans la configuration du site": "Cancellazione vietata, pagina attiva nella configurazione del sito",
"Supprime le point d'interrogation dans les URL, l'option est indisponible avec les autres serveurs Web": "Rimuove il punto interrogativo negli URL; l'opzione non è disponibile con altri server web",
"Supprimer": "Cancella",
"Supprimer la page": "Cancella pagina",
"Supprimer le module": "Elimina modulo",
"Supprimer toutes les sauvegardes automatiques ?": "Cancellare tutti i backup automatici?",
"Sécurité": "Sicurezza",
"Sécurité de la connexion": "Sicurezza della connessione",
"Sécurité désactivée": "Sicurezza disabilitata",
"Sélectionner un fichier": "Selezionare un file",
"Sélectionnez au moins un contenu à afficher": "Selezionare almeno un contenuto da visualizzare",
"Sélectionnez la langue à copier vers une langue cible": "Selezionare la lingua da copiare in una lingua di destinazione",
"Sélectionnez une icône adaptée à un thème sombre.<br>Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.": "Selezionare un'icona adatta a un tema scuro.<br>Ricordarsi di cancellare la cache del browser se la favicon non cambia.",
"Sélectionnez une image ou une icône de petite dimension": "Selezionare un'immagine o un'icona piccola",
"Sélectionnez une langue": "Selezionare una lingua",
"Sélectionnez une page contenant le module 'Recherche'. Une option du pied de page ajoute un lien discret vers cette page.": "Selezionare una pagina contenente il modulo 'Ricerca'. Un'opzione a piè di pagina aggiunge un link discreto a questa pagina.",
"Séparateur": "Separatore",
"Taille": "Dimensione",
"Texte": "Testo",
"Thème": "Tema",
"Thème de l'administration": "Tema dell'amministrazione",
"Thème du site": "Tema del sito",
"Thème importé": "Tema importato",
"Thèmes": "Temi",
"Titre": "Titolo",
"Titre court": "Titolo breve",
"Titre masqué dans la page": "Titolo nascosto nella pagina",
"Titres": "Titoli",
"Traduction supprimée": "Traduzione cancellata",
"Twitter": "Twitter",
"Type de captcha": "Tipo di Captcha",
"Type de proxy": "Tipo di proxy",
"Téléchargement et validation de l'archive": "Scaricare e convalidare l'archivio",
"Télécharger": "Scarica",
"Télécharger la liste": "Scarica l'elenco",
"Télécharger le journal": "Scarica la rivista",
"Télécharger le module dans le gestionnaire de fichiers": "Scarica il modulo nel file manager",
"URL incorrecte": "URL non corretto",
"Un mail a été envoyé pour confirmer la réinitialisation": "È stata inviata un'e-mail per confermare il reset",
"Une archive du dossier /site/data est conservée pendant 30 jours. Activation recommandée": "Un archivio della directory /sito/dati viene conservato per 30 giorni. Attivazione consigliata",
"Une erreur est survenue lors de l'étape :": "Si è verificato un errore nel passaggio:",
"Url du fichier de fonte": "Url del file di font",
"Utilisateur inexistant": "L'utente non esiste",
"Utilisateur supprimé": "Utente cancellato",
"Utilisateurs": "Utenti",
"Valider": "Convalidare",
"Vers": "A",
"Version": "Versione",
"Version n°": "Versione n°",
"Vider dossier sauvegardes auto": "Svuota la cartella di backup automatico",
"Vous n'êtes pas autorisé à consulter cette page (erreur 403)": "Non sei autorizzato a visualizzare questa pagina (errore 403)",
"Youtube": "Youtube",
"actualisé": "aggiornato",
"favicon.ico": "favicon.ico",
"faviconDark.ico": "faviconDark.ico",
"gestionnaire de fichiers": "File manager",
"installé": "installato",
"largeur de site :": "larghezza del sito:",
"largeur du site": "Larghezza del sito",
"sauvegardé avec succès": "backup riuscito",
"vers": "A",
"vers ZwiiCMS": "a ZwiiCMS",
"À l'emplacement du mot clé [MODULE] dans la page": "Nella posizione della parola chiave [MODULO] nella pagina",
"Échecs": "Fallito",
"Éditer": "Modifica",
"Éditer la page": "Modifica pagina",
"Éditer les dialogues": "Modifica finestre",
"Éditeur CSS": "Editor CSS",
"Éditeur JS": "Editor JS",
"Éditeur de script %s": "Script Editor %s",
"Éditeur de script dans Body": "Editor di script in Body",
"Éditeur de script dans Head": "Editor di script in Head.",
"Étiquettes des pages spéciales": "Etichette di pagina speciali"
}

View File

@ -1,28 +1,16 @@
{
"languages": {
"fr_FR": {
"version": "4",
"date": 1675459590
"version": 12300,
"date": 1677838293
},
"es": {
"version": "4",
"date": 1675459590
},
"it": {
"version": "4",
"date": 1675459590
},
"pt_PT": {
"version": "4",
"date": 1675459590
"version": 12300,
"date": 1677838293
},
"en_EN": {
"version": "4",
"date": 1675459590
},
"gr_GR": {
"version": "4",
"date": 1675459590
"version": 12300,
"date": 1677838293
}
}
}

View File

@ -1,498 +0,0 @@
{
"'Ne pas afficher' crée une page orpheline non accessible par le biais des menus.": "'Não mostrar' cria uma página órfã que não pode ser acessada pelos menus.",
"'Sauvegarder et télécharger les données du module": "Salvar e baixar dados do módulo",
"1/4 : Préparation...": "1/4: Preparando...",
"10 minutes": "10 minutos",
"10 tentatives": "10 tentativas",
"15 minutes": "15 minutos",
"2/4 : Téléchargement...": "2/4: Baixando...",
"3 tentatives": "3 tentativas",
"3/4 : Installation...": "3/4: Instalando...",
"4/4 : Configuration...": "4/4: Contexto...",
"5 minutes": "5 minutos",
"5 tentatives": "5 tentativas",
"Accueil": "Começar",
"Accès aux pages privées": "Acesso a páginas privadas",
"Accès bloqué %d minutes": "Minutos de acesso bloqueado",
"Accès interdit, erreur 403": "Acesso negado, erro 403",
"Action interdite": "ação não permitida",
"Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.": "Ativação obrigatória de acordo com as leis francesas, a menos que você use seu próprio sistema de consentimento.",
"Activer": "Permitir",
"Activer SMTP": "Ativar SMTP",
"Activer la journalisation": "Ativar registro",
"Actualiser": "Actualizar",
"Administration": "Gestão",
"Administration complète du site": "Administração completa do site",
"Adresse SMTP": "Endereço SMTP",
"Adresse du proxy": "Endereço proxy",
"Adresse électronique": "Endereço de email",
"Affectation": "Atribuição",
"Affiche le nom de la page parente suivi du nom de la page, le titre ne doit pas être masqué.": "Mostre o nome da página principal seguido do nome da página, o título não deve ficar oculto.",
"Afin d'assurer le bon fonctionnement de Zwii, veuillez ne pas fermer cette page avant la fin de l'opération.": "Para garantir o funcionamento adequado do Zwii, não feche esta página antes que a operação seja concluída",
"Aide": "Ajuda",
"Ajout - Édition - Suppression de fichiers": "Adicionar/editar/excluir arquivos",
"Ajout - Édition - Suppression de pages": "Adicionando - Editando - Excluindo páginas",
"Ajouter un utilisateur": "Adicionar usuário",
"Ajouter une fonte": "Adicionar uma fonte",
"Ancien mot de passe": "Senha Antiga",
"Anonymat des adresses IP": "Anonimato dos endereços IP",
"Apache URL intelligent": "URL inteligente do Apache",
"Apache URL intelligentes": "URLs inteligentes do Apache",
"Apparence": "Apariencia",
"Appliquer": "Aplicar",
"Après": "Depois",
"Après le contenu de la page": "Depois do conteúdo da página",
"Archive": "Arquivo",
"Archive ZIP": "Arquivo ZIP",
"Archive copiée dans le dossier Modules du gestionnaire de fichier": "Arquivo copiado para a pasta do Módulos Gerenciador de arquivos",
"Archive de thème invalide": "Arquivo de tema inválido",
"Archive invalide": "arquivo inválido",
"Archive invalide, l'écriture dans le dossier core est interdite": "Arquivo inválido, é proibido gravar na pasta principal",
"Archive invalide, le descripteur est absent": "Arquivo inválido, descritor ausente",
"Archive invalide, le fichier de classe est absent": "Arquivo inválido, arquivo de classe está faltando",
"Archive invalide, les dossiers ne correspondent pas au descripteur": "Arquivo inválido, as pastas não correspondem ao descritor",
"Archive non spécifiée ou introuvable": "Arquivo não especificado ou não encontrado",
"Archive à restaurer": "Arquivo para restaurar",
"Arrière plan": "Fundo",
"Arrière plan des blocs": "Fundo de blocos",
"Arrière plan des champs": "Plano de fundo do campo",
"Au début": "No princípio",
"Aucun fichier journal à télécharger": "Nenhum arquivo de log para download",
"Aucun journal à effacer": "Não há registros para excluir",
"Aucun menu": "Sem menu",
"Aucune liste noire à effacer": "Não há lista negra para excluir",
"Aucune liste noire à télécharger": "Nenhuma lista negra para baixar",
"Auteur :": "Autor",
"Authentification": "Autenticação",
"Autoriser les robots à référencer le site": "Permitir que robôs façam referência ao site",
"Avant le contenu de la page": "Antes do conteúdo da página",
"Bannière": "Bandeira",
"Barre 1/3 - page 2/3": "Barra 1/3 - página 2/3",
"Barre 1/4 - page 1/2 - barre 1/4": "Barra 1/4 - página 1/2 - barra 1/4",
"Barre 1/4 - page 3/4": "Barra 1/4 - página 3/4",
"Barre 2/12 - page 7/12 - barre 3/12": "Barra 2/12 - página 7/12 - barra 3/12",
"Barre 3/12 - page 7/12 - barre 2/12": "Barra 3/12 - página 7/12 - barra 2/12",
"Barre latérale": "Barra lateral",
"Barre latérale droite :": "Barra lateral direita:",
"Barre latérale gauche :": "barra lateral esquerda:",
"Barres latérales": "Barras laterais",
"Bienvenue %s %s": "Bem-vindo %s %s",
"Blocage après échecs": "Bloqueio após falhas",
"Bordure des blocs": "Borda dos blocos",
"Bordure des champs": "Borda do campo",
"Bouton Aide": "Botão de ajuda",
"Bouton Standard": "botão padrão",
"Bouton de validation": "Botão de validação",
"Bouton effacement": "Botão Excluir",
"Bouton retour": "botão voltar",
"Bouton standard": "botão padrão",
"Bouton validation": "Botão de validação",
"Boutons": "Botões",
"Captcha complexe": "Captcha Complexo",
"Captcha à la connexion": "Captcha no login",
"Captcha, identifiant ou mot de passe incorrects": "Captcha, nome de usuário ou senha incorretos",
"Capture d'écran Open Graph": "Captura de tela do Open Graph",
"Capture d'écran générée avec succès": "Captura de tela gerada com sucesso",
"Catalogue": "Catálogo",
"Catégorie": "Categoria",
"Ce membre pourra téléverser ou télécharger des fichiers dans le dossier 'partage' et ses sous-dossiers": "Este membro poderá fazer upload ou download de arquivos na pasta 'compartilhar' e suas subpastas",
"Cette page ne doit pas apparaître dans l'arborescence du menu. Créez une page orpheline.": "Esta página não deve aparecer na árvore do menu. Crie uma página órfã..",
"Cette redirection ne concerne que les pages d'administration du site.": "Este redirecionamento diz respeito apenas às páginas de administração do site.",
"Chaîne Youtube": "canal do Youtube",
"Chiffres": "Cifras",
"Clé de l'API <a href=\"https://app.screenshotapi.net/\" target=\"_blank\">ScreenShotApi</a>": "Chave de API <a href=\"https://app.screenshotapi.net/\" target=\"_blank\">ScreenShotApi</a>",
"Clé de l'API <a href='https://app.screenshotapi.net/' target='_blank'>ScreenShotApi</a>": "Chave de API <a href='https://app.screenshotapi.net/' target='_blank'>ScreenShotApi</a>",
"Complète": "Completo",
"Compte administrateur": "Conta de administrador",
"Compte verrouillé": "Conta bloqueada",
"Configuration": "Configuração",
"Configuration du module": "Configuração do módulo",
"Configurer mon compte": "Configurar a minha conta",
"Confirmation": "Confirmação",
"Confirmer la suppression de cet utilisateur": "Confirme a exclusão deste usuário",
"Confirmer la dissociation du module de cette page": "Confirme o módulo de desvinculação desta página",
"Confirmer la désinstallation du module": "Confirme a desinstalação do módulo",
"Confirmer la suppression de la page": "Confirmar exclusão de página",
"Confirmer la suppression des données du module": "Confirme a exclusão de dados do módulo",
"Confirmez-vous la suppression de cette page ?": "Confirma a eliminação desta página?",
"Connexion": "Conecte-se",
"Consulter l'aide en ligne": "Consulte a ajuda online",
"Contenu": "Conteúdo",
"Contenu avancé": "Conteúdo avançado",
"Contenu du menu vertical": "Conteúdo do menu vertical",
"Contenu personnalisé": "Conteúdo personalizado",
"Cookies": "Cookies",
"Cookies Zwii": "Cookies Zwii",
"Copie de contenus localisés": "Cópia do conteúdo localizado",
"Copie de sites inter-langues": "Copiando sites em vários idiomas",
"Copie des traductions rédigées": "Cópia de traduções editadas",
"Copie terminée avec des erreurs": "Cópia concluída com erros",
"Copie terminée avec succès": "Cópia concluída com sucesso",
"Copier sauvegardes auto": "Copiar salvamentos automáticos",
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence.": "Cor visível na ausência de uma imagem.<br />O controle deslizante horizontal ajusta o nível de transparência.",
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence. La couleur du texte est automatique.": "Cor visível na ausência de uma imagem.<br />O controle deslizante horizontal ajusta o nível de transparência. A cor do texto é automática.",
"Couleurs": "Cores",
"Créez un compte gratuit, recopier la clé , puis valider le formulaire avant de cliquer sur le bouton de génération": "Crie uma conta gratuita, copie a chave e valide o formulário antes de clicar no botão gerar",
"Dans quelle langue utiliserez-vous Zwii ?": "Qual idioma o Zwii usará?",
"Date": "Data",
"De": "Do",
"Description": "Descrição do Site",
"Disposition": "Arranjo",
"Données %s copiées vers %s": "Dados %s copiados para %s",
"Données des modules": "Dados do módulo",
"Données importées": "Dados importados",
"Du": "Del",
"Dupliquer la page": "duplicar a página",
"Déconnecte les sessions ouvertes précédemment sur d'autres navigateurs ou terminaux. Activation recommandée.": "Desconecta sessões previamente abertas em outros navegadores ou terminais. Ativação recomendada.",
"Déconnecter": "Desconectar",
"Déconnexion !": "Fechar Sessão!",
"Déconnexion automatique": "Logout automático",
"Dévoiler le mot de passe": "Revele a senha",
"Echec de l'écriture, vérifiez les permissions": "Falha na gravação, verifique as permissões",
"Effacer la page": "limpar página",
"Emplacement :": "Localização",
"Emplacement dans le menu": "Localização no menu",
"En cas de changement de module, les données du module précédent seront supprimées.": "Ao alterar o módulo, os dados do módulo anterior serão apagados.",
"En position libre ajoutez le module en plaçant [MODULE] à l'endroit voulu dans votre page.": "Na posição livre adicione o módulo colocando [MODULE] no local desejado em sua página.",
"Enregistrer": "Registrar",
"Envoyer un message de confirmation": "Envie uma mensagem de confirmação",
"Erreur : sauvegarde non générée !": "Erro: backup não gerado!",
"Erreur d'URL": "Erro de URL",
"Erreur d'extraction, vérifiez les permissions": "Extrair erro, verificar permissões",
"Erreur de copie": "Erro de cópia",
"Erreur de copie, vérifiez les permissions": "Erro de cópia, verifique as permissões",
"Erreur de lecture, vérifiez les permissions": "Erro de leitura, verifique as permissões",
"Erreur inconnue": "Erro desconhecido",
"Erreur inconnue, le module n'est pas installé": "Erro desconhecido, o módulo não está instalado",
"Extension": "Extensão",
"Facebook": "Facebook",
"Famille": "família",
"Favicon thème sombre": "favicon tema escuro",
"Feuille de style spécifique à la page.": "Hoja de estilo específica de la página.",
"Fichiers effacés": "arquivos excluídos",
"Fil d'Ariane dans le titre": "Farinha de rosca no título",
"Fond du sous-menu": "Plano de fundo do submenu",
"FontId": "ID da fonte",
"Fonte actualisée": "Fonte atualizada",
"Fonte créée": "Fonte criada",
"Fonte en ligne": "Elenco on-line",
"Fonte installée": "Tipografía instalada",
"Fonte non créée, ressource absente !": "Fonte não criada, por falta de recursos!",
"Fonte supprimée": "fonte removida",
"Fontes": "Fontes",
"Format incorrect": "Formato incorreto",
"Fuseau horaire": "Fuso horário",
"Gabarits de page - Barre latérale": "Mestre da página - Barra lateral",
"Gestion": "Gerenciar",
"Gestion des modules": "Gerenciamento de módulo",
"Gestion des thèmes": "Gerenciamento de tópicos",
"Github": "Github",
"Groupe": "Banda",
"Groupe requis pour accéder à la page :": "Grupo necessário para acessar a página:",
"Générer sitemap.xml et robots.txt": "Gerar sitemap.xml e robots.txt",
"Générer une capture Open Graph": "Gerar uma captura do Open Graph",
"Gérer les fichiers": "Gestão de ficheiros",
"Gérer les modules": "Gerenciar módulos",
"Hauteur de l'image :": "Altura da imagem",
"ID de la chaîne : https://www.youtube.com/channel/[ID].": "ID do canal: https://www.youtube.com/channel/[ID].",
"Icône": "Ícone",
"Icône avec bulle de texte": "Ícone com bolha de texto",
"Identifiant": "Identificador",
"Identifiant (sans espace ni majuscule)": "Identificador (sem espaços ou maiúsculas)",
"Identité": "Identificação",
"Identité de la fonte": "Identidade tipográfica",
"Identité du site": "Identidade do site",
"Il apparaît dans la barre de titre et les partages sur les réseaux sociaux.": "Ele aparece na barra de título e nos compartilhamentos de mídia social.",
"Image": "Imagen",
"Importation d'utilisateurs": "Importação de usuários",
"Importation de fichier plat CSV": "Importar arquivo CSV simples",
"Importation effectuée": "Importação concluída",
"Importer": "Importar",
"Importer dans": "Importar para",
"Importer des utilisateurs en masse": "Importar usuários em massa",
"Impossible d'ouvrir l'archive": "Não é possível abrir o arquivo",
"Impossible de modifier votre propre groupe.": "Não foi possível editar seu próprio grupo.",
"Impossible de supprimer une page contenant des pages enfants": "Não é possível excluir uma página que contém páginas filhas",
"Impossible de supprimer votre propre compte": "Você não pode excluir sua própria conta",
"Inclure le contenu du gestionnaire de fichiers": "Captura de tela gerada com sucesso",
"Incorrect": "Incorreta",
"Informations": "Informação",
"Instagram": "Instagram",
"Installation": "Instalação",
"Installation terminée": "instalação completa",
"Installer": "Instalar",
"Installer depuis le catalogue en ligne": "Instalar a partir do catálogo online",
"Installer depuis une archive": "Instalar do arquivo",
"Installer les données d'un module": "Instalar dados de um módulo",
"Installer ou mettre à jour un module téléchargé": "Instalar ou atualizar um módulo baixado",
"Installer un module": "Instalar um módulo",
"Installer un thème archivé (site ou administration)": "Instale um tema arquivado (site ou administrador)",
"Instructions JS ou jquery spécifiques à la page.": "Instrucciones JS o jquery específicas de la página.",
"Interface": "Interface",
"Jeton invalide": "Símbolo inválido",
"Journal réinitialisé avec succès": "Registro redefinido com sucesso",
"Journalisation": "Conecte-se",
"L'archive a été déposée dans le gestionnaire de fichiers. Les archives inférieures à la version 9 ne sont pas acceptées.": "O arquivo foi depositado no gerenciador de arquivos. Arquivos anteriores à versão 9 não são aceitos.",
"L'identifiant est défini lors de la création du compte, il ne peut pas être modifié.": "O identificador é definido ao criar a conta, não pode ser modificado.",
"La carte du site a été mise à jour": "O mapa do site foi atualizado.",
"La clé de l'API ne peut pas être vide": "A chave de API não pode estar vazia",
"La description d'une page participe à son référencement, chaque page doit disposer d'une description différente.": "A descrição de uma página participa de sua referenciação, cada página deve ter uma descrição diferente.",
"La page %s est ouverte par l'utilisateur %s": "A página %s é aberta pelo utilizador %s",
"La page demandée n'existe pas ou est introuvable (erreur 404)": "A página solicitada não existe ou não pode ser encontrada (erro 404)",
"La page est affichée dans un menu horizontal mais pas dans le menu vertical d'une barre latérale.": "A página é exibida em um menu horizontal, mas não no menu vertical de uma barra lateral.",
"La première page que vos visiteurs verront.": "A primeira página que seus visitantes verão.",
"La règlementation française impose un anonymat de niveau 2": "Regulamentos franceses impõem anonimato de nível 2",
"La sauvegarde des fichiers peut prendre du temps. Continuer ?": "O backup de arquivos pode demorar um pouco. Você deseja continuar?",
"La suppression a échoué": "exclusão malsucedida",
"La version installée est plus récente": "A versão instalada é mais recente.",
"La vérification est quotidienne. Option désactivée si la configuration du serveur ne le permet pas.": "A verificação é diária. Opção desabilitada se a configuração do servidor não permitir.",
"Langue de l'administration": "Idioma de administração",
"Langue du site sélectionnée": "Idioma do site selecionado",
"Langue par défaut": "Idioma padrão",
"Langues": "Línguas",
"Langues disponibles": "Idiomas disponíveis",
"Langues installées": "Idiomas instalados",
"Largeur de l'image :": "Largura da imagem",
"Le curseur horizontal règle le niveau de transparence, le placer tout à la gauche pour un surlignement invisible.": "O controle deslizante horizontal define o nível de transparência, defina-o totalmente para a esquerda para um destaque invisível.",
"Le fuseau horaire est utile au bon référencement": "O fuso horário é útil para uma boa referência",
"Le menu accessoire est aligné à droite de la barre de menu, c'est un emplacement réservé aux drapeaux et au bouton de connexion.": "O menu de acessórios está alinhado à direita da barra de menus, é um espaço reservado para sinalizadores e o botão de login.",
"Le menu horizontal intégral": "O menu horizontal completo",
"Le module %s a été %s": "O módulo %s foi %s",
"Le module %s de la page %s a été supprimé": "Módulo %s de página %s removido",
"Le module %s est désinstallé, il reste peut-être des données dans %s": "O módulo %s é desinstalado, os dados podem permanecer %s",
"Le sous-menu de la page parente": "O submenu da página pai",
"Le survol d'une icône de l'écran de connexion affiche temporairement le mot de passe.": "Passar o mouse sobre um ícone da tela de login exibe temporariamente a senha.",
"Le titre court est affiché dans les menus. Il peut être identique au titre de la page.": "O título curto é exibido nos menus. Pode ser o mesmo que o título da página.",
"Les langues sélectionnées sont identiques": "Os idiomas selecionados são idênticos",
"Les mentions légales sont obligatoires en France. Une option du pied de page ajoute un lien discret vers cette page.": "Avisos legais são obrigatórios na França. Uma opção de rodapé adiciona um link discreto a esta página.",
"Les modifications que vous avez apportées ne seront peut-être pas enregistrées.": "As alterações feitas podem não ser salvas.",
"Lettres": "Letras",
"Licence :": "Licença",
"Lien page des mentions légales.": "Link da página de aviso legal.",
"Liens": "Links",
"Limitation des tentatives": "Limitação de tentativa",
"Linkedin": "Linkedin",
"Liste noire": "Lista negra",
"Liste noire réinitialisée avec succès": "Lista negra redefinida com sucesso",
"Lors d'une mise à jour automatique, conserve le fichier htaccess de la racine du site.": "Durante uma atualização automática, mantém o arquivo htaccess da raiz do site.",
"Maintenance": "Manutenção",
"Masquer la page et les pages enfants dans le menu d'une barre latérale": "Seleccione una imagen o icono pequeño",
"Masquer les pages enfants dans le menu horizontal": "Selecione uma pequena imagem ou ícone",
"Mentions légales": "Notícia legal",
"Menu": "Menu",
"Menu accessoire": "Menu de acessórios",
"Menu standard": "Menu normal",
"Message d'acceptation des Cookies": "Mensagem de aceitação de cookies",
"Message de consentement aux cookies": "Mensagem de consentimento de cookies",
"Mettre à jour": "Actualizar",
"Mettre à jour le module orphelin": "Atualizar módulo órfão",
"Mise en forme des titres": "Formato do título",
"Mise en forme du texte": "Formato de texto",
"Mise en forme du titre": "Formato do título",
"Mise en page": "Esquema",
"Mise à jour": "Atualizar",
"Mise à jour automatisée": "atualização automática",
"Mise à jour de ZwiiCMS": "Atualização do ZwiiCMS",
"Mise à jour terminée avec succès.": "Atualização concluída com sucesso.",
"Modifications enregistrées": "Alterações salvas",
"Module": "Módulo",
"Module de la page": "Módulo de página",
"Modules configurés": "Módulos Configurados",
"Modules installés": "Módulos instalados",
"Modules orphelins": "Módulos órfãos",
"Mot de passe": "Senha",
"Mot de passe oublié": "Senha esquecida",
"Multilingue": "Multilíngue",
"Méta-description": "Meta Descrição",
"Méta-titre": "Meta-título",
"Ne pas afficher": "Não exibido",
"Ne pas charger l'exemple de site (utilisateurs avancés)": "Não carregue o site de amostra (usuários avançados)",
"Ne pas saisir les balises": "Não insira tags",
"Niveau 1 (192.168.12.x)": "Nivel 1 (192.168.12.x)",
"Niveau 2 (192.168.x.x)": "Nivel 2 (192.168.x.x)",
"Niveau 3 (192.x.x.x)": "Nivel 3 (192.x.x.x)",
"Nom": "Nome",
"Nom utilisateur": "Nome de usuário",
"Non": "Não",
"Notre site est actuellement en maintenance. Nous sommes désolés pour la gêne occasionnée et faisons notre possible pour être rapidement de retour.": "Nosso site está atualmente em manutenção. Lamentamos o transtorno e estamos fazendo o possível para retornar o mais breve possível.",
"Nouveau contenu localisé": "Novo conteúdo localizado",
"Nouveau mot de passe": "Nova Senha",
"Nouveau mot de passe enregistré": "Nova senha salva",
"Nouvel utilisateur": "Novo usuário",
"Nouvelle page créée": "Nova página criada",
"Nouvelle page ou barre latérale": "Nova página ou barra lateral",
"Option active en mode déconnecté uniquement, les pages enfants sont visibles et accessibles.": "Opção ativa apenas no modo offline, as páginas filhas ficam visíveis e acessíveis.",
"Option recommandée pour sécuriser la connexion. S'applique à tous les captchas du site. Le captcha simple se limite à une addition de nombres de 0 à 10. Le captcha complexe utilise quatre opérations de nombres de 0 à 20. Activation recommandée.": "Opção recomendada para proteger a conexão. Aplica-se a todos os captchas do site. O captcha simples está limitado à adição de números de 0 a 10. O captcha complexo utiliza quatro operações de números de 0 a 20. Ativação recomendada.",
"Options avancées": "Opções avançadas",
"Origine": "Fonte",
"Oui": "Sim",
"Page": "Página",
"Page 2/3 - barre 1/3": "Página 2/3 - barra 1/3",
"Page 3/4 - barre 1/4": "Página 3/4 - barra 1/4",
"Page associée": "página relacionada",
"Page dupliquée": "Página duplicada",
"Page et module dupliqués": "Página y módulo duplicados",
"Page inexistante, erreur 404": "A página não existe, erro 404",
"Page non cliquable": "A página não é clicável",
"Page parent": "Página principal",
"Page standard": "Página normal",
"Page supprimée": "página excluída",
"Pages dans le menu": "Páginas no menu",
"Pages du site": "Páginas do site",
"Pages et les modules de": "Páginas e módulos",
"Pages orphelines": "Páginas órfãs",
"Papier peint": "Cor de fundo",
"Par défaut le menu est affiché APRES le contenu de la page. Pour le positionner à un emplacement précis, insérez [MENU] dans le contenu de la page.": "Por padrão, o menu é exibido APÓS o conteúdo da página. Para colocá-lo em um local específico, insira [MENU] no conteúdo da página.",
"Paramètres": "Definições",
"Paramètres de la localisation": "Configurações de localização",
"Paramètres de la sauvegarde": "Configurações de backup",
"Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d'envoi de mail.": "Parâmetros a serem usados quando seu host não oferece a funcionalidade de envio de e-mail.",
"Partage de fichiers autorisé": "Compartilhamento de arquivos permitido",
"Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.": "Lembre-se de excluir o cache do seu navegador se o favicon não mudar.",
"Permission": "Permissão",
"Permission et référencement": "Permissão e referência",
"Permissions :": "Permissões",
"Pied de page": "Rodapé",
"Pinterest": "Pinterest",
"Plan du site": "Mapa do site",
"Police des titres": "tipografia do título",
"Police du texte": "Fonte de texto",
"Port SMTP": "Porta SMTP",
"Port du proxy": "Porta proxy",
"Position": "Posição",
"Position du module": "Posição do módulo",
"Pour définir la page comme barre latérale, choisissez l'option dans la liste.": "Para definir a página como barra lateral, escolha a opção na lista.",
"Prénom": "Primeiro nome",
"Préparation de la mise à jour": "Preparaação para a atualização",
"Préserver le fichier htaccess racine": "Preservar o arquivo htaccess raiz",
"Préserver les comptes des utilisateurs déjà installés": "Preservar contas de usuário já instaladas",
"Prévenir l'utilisateur par mail": "Notifique o usuário por e-mail",
"Pseudo": "Pseudo",
"Ratio :": "Relação",
"Recherche dans le site": "Pesquisa de sites",
"Rechercher": "Buscar",
"Rechercher une mise à jour en ligne": "verifique se há uma atualização on-line",
"Redirection vers la connexion": "Redirecionar para login",
"Renseignez les champs ci-dessous pour finaliser l'installation.": "Complete as zonas abaixo para concluir a instalação.",
"Restauration effectuée avec succès": "Restauração concluída com sucesso",
"Restaurer": "Restaurar",
"Restaurer les données du site": "Restaurar dados do site",
"Rester connecté sur ce navigateur": "Permaneça conectado neste navegador",
"Retour": "De volta",
"Rien à importer, erreur de format ou fichier incorrect": "Nada para importar, erro de formatação ou arquivo incorreto",
"Référencement": "referenciando",
"Réinitialisation du mot de passe": "Redefinir a senha do usuário",
"Réinitialiser avec le thème par défaut": "Redefinir para o tema padrão",
"Réinitialiser la feuille de style": "redefinir folha de estilo",
"Réinitialiser la liste": "Redefinir lista",
"Réinitialiser le journal": "Restablecer registro",
"Réinstaller": "Reinstalar",
"Réseau": "La red",
"Réseaux sociaux": "Redes sociais",
"S'ouvre dans un nouvel onglet": "Abre em uma nova guia",
"SMTP": "SMTP",
"Saisir la clé, puis valider le formulaire avant de cliquer sur le bouton de génération": "Digite a chave e valide o formulário antes de clicar no botão gerar",
"Saisissez le Titre de gestion des cookies.": "Digite o título da janela de gerenciamento de cookies.",
"Saisissez le message pour les cookies déposés par ZwiiCMS, nécessaires au fonctionnement et qui ne nécessitent pas de consentement.": "Insira a mensagem para cookies depositados pelo ZwiiCMS, necessários para o funcionamento e que não requerem consentimento.",
"Saisissez le texte du lien vers les mentions légales,la page doit être définie dans la configuration du site.": "Digite o texto do link para os avisos legais, a página deve ser definida na configuração do site.",
"Saisissez votre ID : https://pinterest.com/[ID].": "Digite seu ID: https://pinterest.com/[ID].",
"Saisissez votre ID : https://twitter.com/[ID].": "Digite seu ID: https://twitter.com/[ID].",
"Saisissez votre ID : https://www.facebook.com/[ID].": "Digite seu ID: https://www.facebook.com/[ID].",
"Saisissez votre ID : https://www.instagram.com/[ID].": "Digite seu ID: https://www.instagram.com/[ID].",
"Saisissez votre ID Github : https://github.com/[ID].": "Digite seu ID do Github: https://github.com/[ID].",
"Saisissez votre ID Linkedin : https://fr.linkedin.com/in/[ID].": "Digite seu ID do Linkedin: https://fr.linkedin.com/in/[ID].",
"Saisissez votre ID Utilisateur : https://www.youtube.com/user/[ID].": "Digite seu ID de usuário: https://www.youtube.com/user/[ID].",
"Sauvegarde": "Salvaguarda",
"Sauvegarde automatique quotidienne du site": "Backup diário automático do site",
"Sauvegarde du thème dans le": "Salvando tema para",
"Sauvegarde générée avec succès.": "Backup gerado com sucesso",
"Sauvegarder": "Para salvaguardar",
"Sauvegarder et télécharger le module": "Salve e baixe o módulo",
"Sauvegarder le module dans le gestionnaire de fichiers": "Salvar módulo no gerenciador de arquivos",
"Sauvegarder les données du module dans le gestionnaire de fichiers": "Salve os dados do módulo no gerenciador de arquivos",
"Sauvegarder les données du site": "Salvar dados do site",
"Script dans body": "Script en el body",
"Script dans head": "Script en el head",
"Scripts externes": "Scripts externos",
"Se déconnecter": "Sair",
"Service en ligne inaccessible": "Serviço online inacessível",
"Seul un administrateur peut se connecter lors d'une maintenance": "Somente um administrador pode fazer login durante uma manutenção",
"Si le contenu du gestionnaire de fichiers est très volumineux, mieux vaut une copie par FTP.": "Se o conteúdo do gerenciador de arquivos for muito grande, é melhor copiar por FTP.",
"Signature": "Assinatura",
"Site": "Sitio",
"Site en maintenance": "Site em manutenção",
"Suppression interdite": "exclusão proibida",
"Suppression interdite, page active dans la configuration du site": "Exclusão proibida, página ativa nas configurações do site",
"Supprime le point d'interrogation dans les URL, l'option est indisponible avec les autres serveurs Web": "Eliminar el signo de interrogación en las URL, la opción no está disponible con otros servidores web",
"Supprimer": "Deletar",
"Supprimer la page": "Excluir página",
"Supprimer le module": "Excluir módulo",
"Supprimer toutes les sauvegardes automatiques ?": "Remover todos os salvamentos automáticos?",
"Sécurité": "Segurança",
"Sécurité de la connexion": "segurança de conexão",
"Sécurité désactivée": "Segurança desativada",
"Sélectionner un fichier": "Seleccione um ficheiro",
"Sélectionnez au moins un contenu à afficher": "Selecione pelo menos um conteúdo para exibir",
"Sélectionnez la langue à copier vers une langue cible": "Selecione o idioma para copiar para outro idioma",
"Sélectionnez une icône adaptée à un thème sombre.<br>Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.": "Selecione um ícone adequado para um tema escuro.<br>Lembre-se de excluir o cache do seu navegador se o favicon não mudar.",
"Sélectionnez une image ou une icône de petite dimension": "Selecione uma pequena imagem ou ícone",
"Sélectionnez une langue": "Selecione um idioma",
"Sélectionnez une page contenant le module 'Recherche'. Une option du pied de page ajoute un lien discret vers cette page.": "Selecione uma página contendo o módulo 'Pesquisar'. Uma opção de rodapé adiciona um link discreto a esta página.",
"Séparateur": "Separador",
"Taille": "Tamanho",
"Texte": "Texto",
"Thème": "Tema",
"Thème de l'administration": "Tema administrativo",
"Thème du site": "Tema do site",
"Thème importé": "Tema importado",
"Thèmes": "Temas",
"Titre": "Título",
"Titre court": "Título curto",
"Titre masqué dans la page": "Título mascarado na página",
"Titres": "Títulos",
"Traduction supprimée": "Tradução removida",
"Twitter": "Twitter",
"Type de captcha": "Tipo de captcha",
"Type de proxy": "Tipo de proxy",
"Téléchargement et validation de l'archive": "Download e validação de arquivos",
"Télécharger": "Baixar",
"Télécharger la liste": "Descarregar a lista",
"Télécharger le journal": "Descarregar a revista",
"Télécharger le module dans le gestionnaire de fichiers": "Carregar módulo para o gerenciador de arquivos",
"URL incorrecte": "URL errada",
"Un mail a été envoyé pour confirmer la réinitialisation": "Um e-mail foi enviado para confirmar a redefinição.",
"Une archive du dossier /site/data est conservée pendant 30 jours. Activation recommandée": "Um arquivo da pasta /site/data é mantido por 30 dias. Ativação recomendada",
"Une erreur est survenue lors de l'étape :": "Ocorreu um erro durante o processo",
"Url du fichier de fonte": "URL do arquivo de fonte",
"Utilisateur inexistant": "Usuário inexistente",
"Utilisateur supprimé": "Usuário excluído",
"Utilisateurs": "Usuários",
"Valider": "Validar",
"Vers": "Para",
"Version": "Versão",
"Version n°": "Número da versão",
"Vider dossier sauvegardes auto": "Pasta de salvamento automático vazia",
"Vous n'êtes pas autorisé à consulter cette page (erreur 403)": "Não está autorizado a ver esta página (erro 403)",
"Youtube": "YouTube",
"actualisé": "Atualizada",
"favicon.ico": "favicon.ico",
"faviconDark.ico": "faviconDark.ico",
"gestionnaire de fichiers": "Gerenciador de arquivos",
"installé": "Instalado",
"largeur de site :": "Largura do site",
"largeur du site": "Largura do site",
"sauvegardé avec succès": "Salvo com sucesso",
"vers": "Para",
"vers ZwiiCMS": "Rumo ao ZwiiCMS",
"À l'emplacement du mot clé [MODULE] dans la page": "No local da palavra-chave [MODULE] na página",
"Échecs": "Falhas",
"Éditer": "Editar",
"Éditer la page": "Editar página",
"Éditer les dialogues": "Editar caixas de diálogo",
"Éditeur CSS": "Editor de CSS",
"Éditeur JS": "Editor de JS",
"Éditeur de script %s": "Editor de script %s",
"Éditeur de script dans Body": "Éditor do script no Body",
"Éditeur de script dans Head": "Éditor do script no Head",
"Étiquettes des pages spéciales": "Tags de página especiais"
}

View File

@ -1,22 +1,24 @@
{
"defaut" : {
"name": "Le thème par défaut, ambiance bleu et montagne",
"filename": ""
},
"moderne": {
"name": "Thème avec la nouvelle bannière personnalisable",
"filename": "theme_moderne.zip"
},
"affaire": {
"name": "Thème affaire, bannière centre d'appel, ambiance prune",
"filename": "theme_affaire.zip"
},
"black": {
"name": "Thème de nuit, ambiance nocturne",
"filename": "theme_orange_black.zip"
},
"facebook": {
"name": "Thème Facebook ancienne génération, pas de bannière, menu fixe fond bleu",
"filename": "theme_old_facebook.zip"
"themes": {
"defaut": {
"name": "Le thème par défaut, ambiance bleu et montagne",
"filename": ""
},
"moderne": {
"name": "Thème avec la nouvelle bannière personnalisable",
"filename": "theme_moderne.zip"
},
"affaire": {
"name": "Thème affaire, bannière centre d'appel, ambiance prune",
"filename": "theme_affaire.zip"
},
"black": {
"name": "Thème de nuit, ambiance nocturne",
"filename": "theme_orange_black.zip"
},
"facebook": {
"name": "Thème Facebook ancienne génération, pas de bannière, menu fixe fond bleu",
"filename": "theme_old_facebook.zip"
}
}
}

View File

@ -41,28 +41,28 @@ class page extends common
// Position du module
public static $modulePosition = [
'bottom' => 'Après le contenu de la page',
'top' => 'Avant le contenu de la page',
'free' => 'À l\'emplacement du mot clé [MODULE] dans la page'
'top' => 'Avant le contenu de la page',
'free' => 'À l\'emplacement du mot clé [MODULE] dans la page'
];
public static $pageBlocks = [
'12' => 'Page standard',
'bar' => 'Barre latérale',
'4-8' => 'Barre 1/3 - page 2/3',
'8-4' => 'Page 2/3 - barre 1/3',
'3-9' => 'Barre 1/4 - page 3/4',
'9-3' => 'Page 3/4 - barre 1/4',
'12' => 'Page standard',
'bar' => 'Barre latérale',
'4-8' => 'Barre 1/3 - page 2/3',
'8-4' => 'Page 2/3 - barre 1/3',
'3-9' => 'Barre 1/4 - page 3/4',
'9-3' => 'Page 3/4 - barre 1/4',
'3-6-3' => 'Barre 1/4 - page 1/2 - barre 1/4',
'2-7-3' => 'Barre 2/12 - page 7/12 - barre 3/12',
'3-7-2' => 'Barre 3/12 - page 7/12 - barre 2/12',
];
public static $displayMenu = [
'none' => 'Aucun menu',
'parents' => 'Le menu horizontal intégral',
'children' => 'Le sous-menu de la page parente'
'none' => 'Aucun menu',
'parents' => 'Le menu horizontal intégral',
'children' => 'Le sous-menu de la page parente'
];
public static $extraPosition = [
false => 'Menu standard',
true => 'Menu accessoire'
false => 'Menu standard',
true => 'Menu accessoire'
];
@ -138,7 +138,7 @@ class page extends common
'typeMenu' => 'text',
'iconUrl' => '',
'disable' => false,
'content' => $pageId . '.html',
'content' => $pageId . '.html',
'hideTitle' => false,
'breadCrumb' => false,
'metaDescription' => '',
@ -193,7 +193,7 @@ class page extends common
$this->addOutput([
'access' => false
]);
} // Jeton incorrect
} // Jeton incorrect
elseif (!isset($_GET['csrf'])) {
// Valeurs en sortie
$this->addOutput([
@ -211,7 +211,7 @@ class page extends common
elseif ($url[0] === $this->getData(['locale', 'homePageId'])) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'config',
'redirect' => helper::baseUrl() . 'config',
'notification' => helper::translate('Suppression interdite, page active dans la configuration du site')
]);
}
@ -219,7 +219,7 @@ class page extends common
elseif ($url[0] === $this->getData(['locale', 'searchPageId'])) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'config',
'redirect' => helper::baseUrl() . 'config',
'notification' => helper::translate('Suppression interdite, page active dans la configuration du site')
]);
}
@ -260,13 +260,13 @@ class page extends common
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
'notification' => helper::translate('Jeton invalide')
'notification' => helper::translate('Jeton invalide')
]);
} elseif ($_GET['csrf'] !== $_SESSION['csrf']) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
'notification' => helper::translate('Suppression interdite')
'notification' => helper::translate('Suppression interdite')
]);
}
// Impossible de supprimer une page contenant des enfants
@ -274,7 +274,7 @@ class page extends common
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0],
'notification' => helper::translate('Impossible de supprimer une page contenant des pages enfants')
'notification' => helper::translate('Impossible de supprimer une page contenant des pages enfants')
]);
}
// Suppression
@ -285,7 +285,7 @@ class page extends common
$modulesData = helper::getModules();
if (
array_key_exists($moduleId, $modulesData)
&& is_dir($modulesData[$moduleId]['dataDirectory'] . $url[0])
&& is_dir($modulesData[$moduleId]['dataDirectory'] . $url[0])
) {
$this->removeDir($modulesData[$moduleId]['dataDirectory'] . $url[0]);
}
@ -433,7 +433,7 @@ class page extends common
// Une page parent devient orpheline, les pages enfants le devienne pour éviter une incohérence
if (
$position === 0 &&
$position !== $this->getData(['page', $this->getUrl(2), 'position']) &&
$position !== $this->getData(['page', $this->getUrl(2), 'position']) &&
$this->getinput('pageEditBlock') !== 'bar'
) {
foreach ($this->getHierarchy($pageId) as $parentId => $childId) {
@ -492,8 +492,8 @@ class page extends common
'hideMenuHead' => $this->getinput('pageEditHideMenuHead', helper::FILTER_BOOLEAN),
'hideMenuChildren' => $this->getinput('pageEditHideMenuChildren', helper::FILTER_BOOLEAN),
'extraPosition' => $this->getinput('pageEditExtraPosition', helper::FILTER_BOOLEAN),
'css' => $this->getData(['page', $this->getUrl(2), 'css']),
'js' => $this->getData(['page', $this->getUrl(2), 'js']),
'css' => $this->getData(['page', $this->getUrl(2), 'css']) == null ? '' : $this->getData(['page', $this->getUrl(2), 'css']),
'js' => $this->getData(['page', $this->getUrl(2), 'js']) == null ? '' : $this->getData(['page', $this->getUrl(2), 'js']),
]
]);
@ -529,7 +529,16 @@ class page extends common
}
}
}
self::$moduleIds = array_merge(['' => 'Aucun'], helper::arrayColumn(helper::getModules(), 'realName', 'SORT_ASC')); // Pages sans parent
// Construction du formulaire
// Création du sélecteur de modules
self::$moduleIds = [];
foreach (helper::getModules() as $key => $values) {
self::$moduleIds[$key] = $values['realName'] . ' (' . $key . ')';
}
self::$moduleIds = array_merge(['' => 'Aucun'], self::$moduleIds);
// Pages sans parent
foreach ($this->getHierarchy() as $parentPageId => $childrenPageIds) {
if ($parentPageId !== $this->getUrl(2)) {
self::$pagesNoParentId[$parentPageId] = $this->getData(['page', $parentPageId, 'title']);
@ -544,6 +553,13 @@ class page extends common
self::$pagesBarId[$parentPageId] = $this->getData(['page', $parentPageId, 'title']);
}
}
// Met à jour le site map
$this->createSitemap('all');
// Mise à jour de la liste des pages pour TinyMCE
$this->listPages();
// Valeurs en sortie
$this->addOutput([
'title' => $this->getData(['page', $this->getUrl(2), 'title']),
@ -562,11 +578,11 @@ class page extends common
{
// Soumission du formulaire
if ($this->isPost()) {
// Supprime les balises styles si elles ont été saisies
$css = $this->getInput('pageCssEditorContent', null);
$css = $this->getInput('pageCssEditorContent') === null ? '' : $this->getInput('pageCssEditorContent');
// Enregistre le CSS
$this->setData([
'page', $this->getUrl(2), 'css',
'page', $this->getUrl(2),
'css',
$css
]);
// Valeurs en sortie
@ -593,11 +609,11 @@ class page extends common
{
// Soumission du formulaire
if ($this->isPost()) {
// Supprime les balises scripts si elles ont été saisies
$js = $this->getInput('pageJsEditorContent', null);
$js = $this->getInput('pageJsEditorContent') === null ? '' : $this->getInput('pageJsEditorContent');
// Enregistre le JS
$this->setData([
'page', $this->getUrl(2), 'js',
'page', $this->getUrl(2),
'js',
$js
]);
// Valeurs en sortie

View File

@ -23,7 +23,7 @@
});
});
$("#pageEditModuleId").on("click", function() {
$("#pageEditModuleId").on("change", function() {
protectModule();
});

View File

@ -148,7 +148,7 @@
</div>
<div class="col4">
<?php echo template::select('pageEditExtraPosition', $module::$extraPosition, [
'label' => 'Emplacement :',
'label' => 'Emplacement',
'selected' => $this->getData(['page', $this->getUrl(2), 'extraPosition']),
'help' => 'Le menu accessoire est aligné à droite de la barre de menu, c\'est un emplacement réservé aux drapeaux et au bouton de connexion.'
]); ?>

View File

@ -21,7 +21,7 @@
</div>
<div class="row">
<div class="col12 textAlignCenter">
&nbsp;<?php echo helper::translate('du') . '&nbsp;' . $module::$storeItem['fileDate']; ?>
&nbsp;<?php echo helper::translate('date') . '&nbsp;' . $module::$storeItem['fileDate']; ?>
</div>
</div>
<div class="row">
@ -35,7 +35,7 @@
<div class="row">
<div class="col12 textAlignCenter">
<span>
<?php echo helper::translate('Licence :'); ?>
<?php echo helper::translate('Licence'); ?>
&nbsp;
<?php echo $module::$storeItem['fileLicense']; ?>
</span>

View File

@ -119,7 +119,7 @@ class theme extends common
];
public static $headerFeatures = [
'wallpaper' => 'Couleur unie ou papier-peint',
'feature' => 'Contenu personnalisé'
'feature' => 'Contenu HTML'
];
public static $imagePositions = [
'top left' => 'En haut à gauche',
@ -253,7 +253,6 @@ class theme extends common
'backgroundColor' => $this->getInput('adminBackgroundColor'),
'colorTitle' => $this->getInput('adminColorTitle'),
'colorText' => $this->getInput('adminColorText'),
'colorButtonText' => $this->getInput('adminColorButtonText'),
'backgroundColorButton' => $this->getInput('adminColorButton'),
'backgroundColorButtonGrey' => $this->getInput('adminColorGrey'),
'backgroundColorButtonRed' => $this->getInput('adminColorRed'),
@ -658,8 +657,8 @@ class theme extends common
// Soumission du formulaire
if ($this->isPost()) {
// Type d'import en ligne ou local
$type = $this->getInput('fontAddFontImported', helper::FILTER_BOOLEAN) ? 'imported' : 'files';
$typeFlip = $type === 'files' ? 'imported' : 'files';
$type = $this->getInput('fontAddUrl', helper::FILTER_BOOLEAN) ? 'imported' : 'files';
$type === 'files' ? 'imported' : 'files';
$ressource = $type === 'imported' ? $this->getInput('fontAddUrl', null) : $this->getInput('fontAddFile', null);
if (!empty($ressource)) {
$fontId = $this->getInput('fontAddFontId', null, true);
@ -670,8 +669,8 @@ class theme extends common
$fontFamilyName = str_replace('"', '\'', $fontFamilyName);
// Supprime la fonte si elle existe dans le type inverse
if (is_array($this->getData(['fonts', $typeFlip, $fontId]))) {
$this->deleteData(['fonts', $typeFlip, $fontId]);
if (is_array($this->getData(['fonts', $type, $fontId]))) {
$this->deleteData(['fonts', $type, $fontId]);
}
// Stocker la fonte
$this->setData([
@ -724,8 +723,7 @@ class theme extends common
// Soumission du formulaire
if ($this->isPost()) {
// Type d'import en ligne ou local
$type = $this->getInput('fontEditFontImported', helper::FILTER_BOOLEAN) ? 'imported' : 'files';
$typeFlip = $type === 'files' ? 'imported' : 'files';
$type = $this->getInput('fontEditUrl', helper::FILTER_BOOLEAN) ? 'imported' : 'files';
$ressource = $type === 'imported' ? $this->getInput('fontEditUrl', null) : $this->getInput('fontEditFile', null);
$fontId = $this->getInput('fontEditFontId', null, true);
$fontName = $this->getInput('fontEditFontName', null, true);
@ -735,9 +733,10 @@ class theme extends common
$fontFamilyName = str_replace('"', '\'', $fontFamilyName);
// Supprime la fonte si elle existe dans le type inverse
if (is_array($this->getData(['fonts', $typeFlip, $fontId]))) {
$this->deleteData(['fonts', $typeFlip, $fontId]);
if (is_array($this->getData(['fonts', $type, $fontId]))) {
$this->deleteData(['fonts', $type, $fontId]);
}
// Stocker les fontes
$this->setData([
'fonts',

View File

@ -9,4 +9,19 @@
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.fr/
*/
$("input, select").on("change",(function(){var titleFont=$("#adminFontTitle").val(),textFont=$("#adminFontText").val(),css="@import url('https://fonts.cdnfonts.com/css/"+titleFont+"');",css="@import url('https://fonts.cdnfonts.com/css/"+textFont+"');",colors,css="#site{background-color:"+(colors=core.colorVariants($("#adminBackgroundColor").val())).normal+";}",colors,colors,colors,colors;css+="body, .row > div {font:"+$("#adminFontTextSize").val()+" '"+textFont+"', sans-serif;}",css+="body h1, h2, h3, h4, h5, h6 {font-family:'"+titleFont+"', sans-serif; color:"+$("#adminColorTitle").val()+";}",css+="body:not(.editorWysiwyg),span .zwiico-help {color:"+$("#adminColorText").val()+";}",css+="input[type='checkbox']:checked + label::before,.speechBubble{ background-color:"+(colors=core.colorVariants($("#adminColorButton").val())).normal+"; color:"+$("#adminColorButtonText").val()+";}",css+=".speechBubble::before {border-color:"+colors.normal+" transparent transparent transparent;}",css+=".button {background-color:"+colors.normal+";color:"+colors.text+";}.button:hover {background-color:"+colors.darken+";color:"+colors.text+";}.button:active {background-color:"+colors.veryDarken+";color:"+colors.text+";}",css+=".button.buttonGrey {background-color: "+(colors=core.colorVariants($("#adminColorGrey").val())).normal+";color:"+colors.text+";}.button.buttonGrey:hover {background-color:"+colors.darken+";color:"+colors.text+"}.button.buttonGrey:active {background-color:"+colors.veryDarken+";color:"+colors.text+";}",css+=".button.buttonRed {background-color: "+(colors=core.colorVariants($("#adminColorRed").val())).normal+";color:"+colors.text+";}.button.buttonRed:hover {background-color:"+colors.darken+";color:"+colors.text+"}.button.buttonRed:active {background-color:"+colors.veryDarken+";color:"+colors.text+"}",css+=".button.buttonGreen, button[type=submit] {background-color: "+(colors=core.colorVariants($("#adminColorGreen").val())).normal+";color: ;color:"+colors.text+"}.button.buttonGreen:hover, button[type=submit]:hover {background-color: "+colors.darken+";color:"+colors.text+";}.button.buttonGreen:active, button[type=submit]:active {background-color:"+colors.veryDarken+";color:"+colors.text+"}";var colors=core.colorVariants($("#adminBackGroundBlockColor").val());css+=".block {border: 1px solid "+$("#adminBorderBlockColor").val()+";}.block h4 {background-color: "+colors.normal+";color:"+colors.text+";}",css+="input[type=email],input[type=text],input[type=password],select:not(#bar select),textarea:not(.editorWysiwyg),.inputFile{background-color: "+colors.normal+";color:"+colors.text+";border: 1px solid "+$("#adminBorderBlockColor").val()+";}",$("#themePreview").remove(),$("<style>").attr("type","text/css").attr("id","themePreview").text(css).appendTo("head")})),$("#configAdminReset").on("click",(function(){var _this=$(this);return core.confirm("Êtes-vous sûr de vouloir réinitialiser à son état d'origine le thème de l'administration ?",(function(){$(location).attr("href",_this.attr("href"))}))}));
$("input, select").on("change", (function () {
var titleFont = $("#adminFontTitle").val(),
textFont = $("#adminFontText").val(),
css = "@import url('https://fonts.cdnfonts.com/css/" + titleFont + "');",
css = "@import url('https://fonts.cdnfonts.com/css/" + textFont + "');",
colors, css = "#site{background-color:" + (colors = core.colorVariants($("#adminBackgroundColor").val())).normal + ";}",
colors, colors, colors, colors;
css += "body, .row > div {font:" + $("#adminFontTextSize").val() + " '" + textFont + "', sans-serif;}", css += "body h1, h2, h3, h4, h5, h6 {font-family:'" + titleFont + "', sans-serif; color:" + $("#adminColorTitle").val() + ";}", css += "body:not(.editorWysiwyg),span .zwiico-help {color:" + $("#adminColorText").val() + ";}", css += "input[type='checkbox']:checked + label::before,.speechBubble{ background-color:" + (colors = core.colorVariants($("#adminColorButton").val())).normal + ";}", css += ".speechBubble::before {border-color:" + colors.normal + " transparent transparent transparent;}", css += ".button {background-color:" + colors.normal + ";color:" + colors.text + ";}.button:hover {background-color:" + colors.darken + ";color:" + colors.text + ";}.button:active {background-color:" + colors.veryDarken + ";color:" + colors.text + ";}", css += ".button.buttonGrey {background-color: " + (colors = core.colorVariants($("#adminColorGrey").val())).normal + ";color:" + colors.text + ";}.button.buttonGrey:hover {background-color:" + colors.darken + ";color:" + colors.text + "}.button.buttonGrey:active {background-color:" + colors.veryDarken + ";color:" + colors.text + ";}", css += ".button.buttonRed {background-color: " + (colors = core.colorVariants($("#adminColorRed").val())).normal + ";color:" + colors.text + ";}.button.buttonRed:hover {background-color:" + colors.darken + ";color:" + colors.text + "}.button.buttonRed:active {background-color:" + colors.veryDarken + ";color:" + colors.text + "}", css += ".button.buttonGreen, button[type=submit] {background-color: " + (colors = core.colorVariants($("#adminColorGreen").val())).normal + ";color: ;color:" + colors.text + "}.button.buttonGreen:hover, button[type=submit]:hover {background-color: " + colors.darken + ";color:" + colors.text + ";}.button.buttonGreen:active, button[type=submit]:active {background-color:" + colors.veryDarken + ";color:" + colors.text + "}";
var colors = core.colorVariants($("#adminBackGroundBlockColor").val());
css += ".block {border: 1px solid " + $("#adminBorderBlockColor").val() + ";}.block h4 {background-color: " + colors.normal + ";color:" + colors.text + ";}", css += "input[type=email],input[type=text],input[type=password],select:not(#bar select),textarea:not(.editorWysiwyg),.inputFile{background-color: " + colors.normal + ";color:" + colors.text + ";border: 1px solid " + $("#adminBorderBlockColor").val() + ";}", $("#themePreview").remove(), $("<style>").attr("type", "text/css").attr("id", "themePreview").text(css).appendTo("head")
})), $("#configAdminReset").on("click", (function () {
var _this = $(this);
return core.confirm("Êtes-vous sûr de vouloir réinitialiser à son état d'origine le thème de l'administration ?", (function () {
$(location).attr("href", _this.attr("href"))
}))
}));

View File

@ -8,12 +8,12 @@
]); ?>
</div>
<div class="col1">
<?php echo template::button('themeBodyHelp', [
<?php /* echo template::button('themeBodyHelp', [
'href' => 'https://doc.zwiicms.fr/arriere-plan',
'target' => '_blank',
'value' => template::ico('help'),
'class' => 'buttonHelp'
]); ?>
]); */ ?>
</div>
<div class="col2 offset8">
<?php echo template::submit('themeBodySubmit'); ?>

View File

@ -8,12 +8,12 @@
]); ?>
</div>
<div class="col1">
<?php echo template::button('fontAddHelp', [
<?php /* echo template::button('fontAddHelp', [
'href' => 'https://doc.zwiicms.fr/fontes#add',
'target' => '_blank',
'value' => template::ico('help'),
'class' => 'buttonHelp'
]); ?>
]); */ ?>
</div>
<div class="col2 offset8">
<?php echo template::submit('fontAddPublish', [

View File

@ -8,12 +8,12 @@
]); ?>
</div>
<div class="col1">
<?php echo template::button('fontEditHelp', [
<?php /* echo template::button('fontEditHelp', [
'href' => 'https://doc.zwiicms.fr/fontes#add',
'target' => '_blank',
'value' => template::ico('help'),
'class' => 'buttonHelp'
]); ?>
]); */ ?>
</div>
<div class="col2 offset8">
<?php echo template::submit('fontEditPublish', [

View File

@ -7,14 +7,14 @@
]); ?>
</div>
<div class="col1">
<?php echo template::button('pageEditHelp', [
<?php /* echo template::button('pageEditHelp', [
'href' => 'https://doc.zwiicms.fr/fontes',
'target' => '_blank',
'value' => template::ico('help'),
'class' => 'buttonHelp'
]); ?>
]); */ ?>
</div>
<div class="col2 offset8">
<div class="col1 offset9">
<?php echo template::button('themeFontAdd', [
'href' => helper::baseUrl() . $this->getUrl(0) . '/fontAdd',
'value' => template::ico('plus'),

View File

@ -8,12 +8,12 @@
]); ?>
</div>
<div class="col1">
<?php echo template::button('themeFooterHelp', [
'href' => 'https://doc.zwiicms.fr/pied-de-page',
'target' => '_blank',
'value' => template::ico('help'),
'class' => 'buttonHelp'
]); ?>
<?php /* echo template::button('themeFooterHelp', [
'href' => 'https://doc.zwiicms.fr/pied-de-page',
'target' => '_blank',
'value' => template::ico('help'),
'class' => 'buttonHelp'
]); */?>
</div>
<div class="col2 offset8">
<?php echo template::submit('themeFooterSubmit'); ?>
@ -22,7 +22,9 @@
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Paramètres'); ?></h4>
<h4>
<?php echo helper::translate('Paramètres'); ?>
</h4>
<div class="row">
<div class="col6">
<?php echo template::select('themeFooterPosition', $module::$footerPositions, [
@ -59,7 +61,9 @@
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Couleurs'); ?></h4>
<h4>
<?php echo helper::translate('Couleurs'); ?>
</h4>
<div class="row">
<div class="col6">
<?php echo template::text('themeFooterTextColor', [
@ -73,7 +77,7 @@
'class' => 'colorPicker',
'label' => 'Arrière plan',
'value' => $this->getData(['theme', 'footer', 'backgroundColor']),
'help' => 'Quand le pied de page est dans le site, l\'arrière plan transparent montre le fond de la page. Quand le pied de page est hors du site, l\'arrière plan transparent montre le fond du site.'
'help' => 'Quand le pied de page est dans le site, l\'arrière plan transparent montre le fond de la page. Quand le pied de page est hors du site, l\'arrière plan transparent montre le fond du site.'
]); ?>
</div>
</div>
@ -83,7 +87,9 @@
<div class="row">
<div class="col12">
<div class="block">
<?php echo helper::translate('Contenu'); ?></h4>
<h4>
<?php echo helper::translate('Éléments'); ?>
</h4>
<div class="row">
<div class="col3">
<?php echo template::checkbox('themefooterDisplayCopyright', true, 'Motorisé par', [
@ -118,8 +124,8 @@
]); ?>
</div>
<div class="col3">
<?php echo template::checkbox('themeFooterMemberBar', true, 'Barre du membre', [
'checked' => $this->getData(['theme', 'footer', 'memberBar']),
<?php echo template::checkbox('themeFooterMemberBar', true, 'Barre de membre', [
'checked' => $this->getData(['theme', 'footer', 'memberBar']),
'help' => 'Affiche les icônes de gestion du compte et de déconnexion des membres simples connectés, ne s\'applique pas aux éditeurs et administrateurs.'
]); ?>
</div>
@ -134,13 +140,13 @@
</div>
<div class="col3">
<?php echo template::select('configLegalPageId', array_merge(['none' => 'Aucune'], helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC')), [
'label' => 'Page "Mentions légales" ' . template::flag('selected', '20px'),
'label' => helper::translate('Mentions légales') . '&nbsp;' . template::flag('selected', '20px'),
'selected' => $this->getData(['locale', 'legalPageId'])
]); ?>
</div>
<div class="col3">
<?php echo template::checkbox('themeFooterDisplaySearch', true, 'Rechercher', [
<?php echo template::checkbox('themeFooterDisplaySearch', true, 'Rechercher dans le site', [
'checked' => $this->getData(['locale', 'searchPageId']) === 'none' ? false : $this->getData(['theme', 'footer', 'displaySearch']),
'disabled' => $this->getData(['locale', 'searchPageId']) === 'none' ? true : false,
'help' => 'Option active si une page a été sélectionnée.'
@ -148,7 +154,7 @@
</div>
<div class="col3">
<?php echo template::select('configSearchPageId', array_merge(['none' => 'Aucune'], helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC')), [
'label' => 'Page "Rechercher" ' . template::flag('selected', '20px'),
'label' => helper::translate('Rechercher dans le site') . '&nbsp;' . template::flag('selected', '20px'),
'selected' => $this->getData(['locale', 'searchPageId'])
]); ?>
</div>
@ -159,7 +165,7 @@
<div class="row">
<div class="col12">
<?php echo template::textarea('themeFooterText', [
'label' => '<div class="titleWysiwygContent">' . helper::translate('Contenu personnalisé') . '</div>',
'label' => '<div class="titleWysiwygContent">' . helper::translate('Contenu HTML') . '</div>',
'value' => $this->getData(['theme', 'footer', 'text']),
'class' => 'editorWysiwyg'
]); ?>
@ -168,7 +174,8 @@
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Mise en forme du texte'); ?>
<h4>
<?php echo helper::translate('Mise en forme du texte'); ?>
</h4>
<div class="row">
<div class="col3">
@ -204,11 +211,12 @@
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Disposition'); ?>
<h4>
<?php echo helper::translate('Disposition'); ?>
</h4>
<div class="row">
<div class="col4">
<?php $footerBlockPosition = is_null($this->getData(['theme', 'footer', 'template'])) ? $module::$footerblocks[3] : $module::$footerblocks[$this->getData(['theme', 'footer', 'template'])]; ?>
<?php $footerBlockPosition = is_null($this->getData(['theme', 'footer', 'template'])) ? $module::$footerblocks[3] : $module::$footerblocks[$this->getData(['theme', 'footer', 'template'])]; ?>
<?php echo template::select('themeFooterTemplate', $module::$footerTemplate, [
'label' => 'Répartition',
'selected' => is_null($this->getData(['theme', 'footer', 'template'])) ? 4 : $this->getData(['theme', 'footer', 'template'])
@ -219,7 +227,7 @@
<div class="col4">
<p>
<strong>
<?php echo helper::translate('Contenu personnalisé'); ?>
<?php echo helper::translate('Contenu HTML'); ?>
</strong>
</p>
<div class="row">

View File

@ -8,12 +8,12 @@
]); ?>
</div>
<div class="col1">
<?php echo template::button('themeHeaderHelp', [
<?php /* echo template::button('themeHeaderHelp', [
'href' => 'https://doc.zwiicms.fr/banniere',
'target' => '_blank',
'value' => template::ico('help'),
'class' => 'buttonHelp'
]); ?>
]); */?>
</div>
<div class="col2 offset8">
<?php echo template::submit('themeHeaderSubmit'); ?>
@ -33,7 +33,7 @@
</div>
<div class="col4">
<?php echo template::select('themeHeaderFeature', $module::$headerFeatures, [
'label' => 'Nature de contenu',
'label' => 'Contenu',
'selected' => $this->getData(['theme', 'header', 'feature'])
]); ?>
</div>
@ -104,7 +104,7 @@
</h4>
<div class="row">
<div class="col4">
<?php echo template::checkbox('themeHeaderTextHide', true, 'Masquer le Titre', [
<?php echo template::checkbox('themeHeaderTextHide', true, 'Titre masqué', [
'checked' => $this->getData(['theme', 'header', 'textHide'])
]); ?>
</div>
@ -163,11 +163,11 @@
]);
?>
<span class="themeHeaderImageOptions displayNone" id="themeHeaderImageInfo">
<?php echo helper::translate('Largeur de l\'image :'); ?> <span id="themeHeaderImageWidth"></span> ( <?php echo helper::translate('largeur de site :'); ?> <?php echo $this->getData(['theme', 'site', 'width']); ?>)
<?php echo helper::translate('Largeur de l\'image :'); ?> <span id="themeHeaderImageWidth"></span> ( <?php echo helper::translate('Largeur :'); ?> <?php echo $this->getData(['theme', 'site', 'width']); ?>)
-
<?php echo helper::translate('Hargeur de l\'image :'); ?> <span id="themeHeaderImageHeight"></span>
<?php echo helper::translate('Largeur de l\'image :'); ?> <span id="themeHeaderImageHeight"></span>
-
<?php echo helper::translate('Ratio :'); ?> <span id="themeHeaderImageRatio"></span>
<?php echo helper::translate('Ratio'); ?> <span id="themeHeaderImageRatio"></span>
</span>
</div>
</div>
@ -209,7 +209,7 @@
<div class="row">
<div class="col12">
<?php echo template::textarea('themeHeaderText', [
'label' => '<div class="titleWysiwygContent">' . helper::translate('Contenu personnalisé') . '</div>',
'label' => '<div class="titleWysiwygContent">' . helper::translate('Contenu HTML') . '</div>',
'class' => 'editorWysiwyg',
'value' => $this->getData(['theme', 'header', 'featureContent'])
]); ?>

View File

@ -2,107 +2,76 @@
$this->getData(['theme', 'header', 'position']) === 'hide'
or $this->getData(['theme', 'menu', 'position']) === 'hide'
or $this->getData(['theme', 'footer', 'position']) === 'hide'
) : ?>
): ?>
<?php echo template::speech('Cliquez sur une zone afin d\'accéder à ses options de personnalisation. Vous pouvez également afficher les zones cachées à l\'aide du bouton ci-dessous.'); ?>
<div class="row">
<div class="col2 offset3">
<div class="col4 offset4">
<?php echo template::button('themeBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl(false),
'ico' => 'home',
'value' => 'Accueil'
]); ?>
</div>
<div class="col2">
<?php echo template::button('themeHelp', [
'href' => 'https://doc.zwiicms.fr/gestion-du-theme',
'target' => '_blank',
'ico' => 'help',
'value' => 'Aide',
'class' => 'buttonHelp'
</div>
<div class="row">
<div class="col2 offset4">
<?php echo template::button('themeFonts', [
'ico' => 'font',
'href' => helper::baseUrl() . $this->getUrl(0) . '/fonts',
'value' => 'Fontes'
]); ?>
</div>
<div class="col2">
<?php echo template::button('themeAdvanced', [
'ico' => 'code',
'href' => helper::baseUrl() . $this->getUrl(0) . '/advanced',
'value' => 'Éditeur CSS'
]); ?>
</div>
</div>
<div class="row">
<div class="col2 offset4">
<?php echo template::button('themeAdmin', [
'ico' => 'brush',
'href' => helper::baseUrl() . $this->getUrl(0) . '/admin',
'value' => 'Administration'
]); ?>
</div>
<div class="col2">
<?php echo template::button('themeManage', [
'ico' => 'sliders',
'href' => helper::baseUrl() . $this->getUrl(0) . '/manage',
'value' => 'Gestion'
]); ?>
</div>
</div>
<div class="row">
<div class="col4 offset4">
<?php echo template::button('themeShowAll', [
'ico' => 'eye',
'value' => 'Zones cachées'
]); ?>
</div>
</div>
<div class="row">
<div class="col2 offset2">
<?php echo template::button('themeFonts', [
'ico' => 'font',
'href' => helper::baseUrl() . $this->getUrl(0) . '/fonts',
'value' => 'Fontes'
]); ?>
</div>
<div class="col2">
<?php echo template::button('themeManage', [
'ico' => 'sliders',
'href' => helper::baseUrl() . $this->getUrl(0) . '/manage',
'value' => 'Gestion'
]); ?>
</div>
<div class="col2">
<?php echo template::button('themeAdmin', [
'ico' => 'brush',
'href' => helper::baseUrl() . $this->getUrl(0) . '/admin',
'value' => 'Administration'
]); ?>
</div>
<div class="col2">
<?php echo template::button('themeAdvanced', [
'ico' => 'code',
'href' => helper::baseUrl() . $this->getUrl(0) . '/advanced',
'value' => 'Éditeur CSS'
]); ?>
</div>
</div>
<?php else : ?>
<?php else: ?>
<?php echo template::speech('Cliquez sur une zone afin d\'accéder à ses options de personnalisation.'); ?>
<div class="row">
<div class="col2 offset4">
<div class="col4 offset4">
<?php echo template::button('themeBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl(false),
'ico' => 'home',
'value' => 'Accueil'
]); ?>
</div>
<div class="col2">
<?php echo template::button('themeHelp', [
'href' => 'https://doc.zwiicms.fr/gestion-du-theme',
'target' => '_blank',
'ico' => 'help',
'value' => 'Aide',
'class' => 'buttonHelp'
]); ?>
</div>
</div>
<div class="row">
<div class="col2 offset2">
<div class="col2 offset4">
<?php echo template::button('themeFonts', [
'ico' => 'font',
'href' => helper::baseUrl() . $this->getUrl(0) . '/fonts',
'value' => 'Fontes'
]); ?>
</div>
<div class="col2">
<?php echo template::button('themeManage', [
'ico' => 'sliders',
'href' => helper::baseUrl() . $this->getUrl(0) . '/manage',
'value' => 'Gestion'
]); ?>
</div>
<div class="col2">
<?php echo template::button('themeAdmin', [
'ico' => 'brush',
'href' => helper::baseUrl() . $this->getUrl(0) . '/admin',
'value' => 'Administration'
]); ?>
</div>
<div class="col2">
<?php echo template::button('themeAdvanced', [
'ico' => 'code',
@ -111,4 +80,20 @@
]); ?>
</div>
</div>
<div class="row">
<div class="col2 offset4">
<?php echo template::button('themeAdmin', [
'ico' => 'brush',
'href' => helper::baseUrl() . $this->getUrl(0) . '/admin',
'value' => 'Administration'
]); ?>
</div>
<div class="col2">
<?php echo template::button('themeManage', [
'ico' => 'sliders',
'href' => helper::baseUrl() . $this->getUrl(0) . '/manage',
'value' => 'Gestion'
]); ?>
</div>
</div>
<?php endif; ?>

View File

@ -8,12 +8,12 @@
]); ?>
</div>
<div class="col1">
<?php echo template::button('themeMenuHelp', [
<?php /* echo template::button('themeMenuHelp', [
'href' => 'https://doc.zwiicms.fr/menu',
'target' => '_blank',
'value' => template::ico('help'),
'class' => 'buttonHelp'
]); ?>
]); */?>
</div>
<div class="col2 offset8">
<?php echo template::submit('themeMenuSubmit'); ?>
@ -22,7 +22,7 @@
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate(' Paramètres'); ?>
<h4><?php echo helper::translate('Paramètres'); ?>
</h4>
<div class="row">
<div class="col6">
@ -158,7 +158,7 @@
<?php echo template::text('themeMenuActiveTextColor', [
'class' => 'colorPicker',
'help' => 'Le curseur horizontal règle le niveau de transparence.',
'label' => 'Texte page active',
'label' => 'Couleur texte page active',
'value' => $this->getData(['theme', 'menu', 'activeTextColor'])
]); ?>
</div>

View File

@ -68,7 +68,7 @@ $("input, select").on("change",function() {
} else {
css += ".button, button{font-size:1em;}";
}
// Largeur du site
// Largeur
var margin = $("#themeSiteMargin").is(":checked") ? 0 : '20px' ;
css += ".container{max-width:" + $("#themeSiteWidth").val() + "}";
if ($("#themeSiteWidth").val() === "100%") {

View File

@ -8,12 +8,12 @@
]); ?>
</div>
<div class="col1">
<?php echo template::button('themeSiteHelp', [
<?php /* echo template::button('themeSiteHelp', [
'href' => 'https://doc.zwiicms.fr/site61863d315ffe0',
'target' => '_blank',
'value' => template::ico('help'),
'class' => 'buttonHelp'
]); ?>
]); */ ?>
</div>
<div class="col2 offset8">
<?php echo template::submit('themeSiteSubmit'); ?>
@ -27,7 +27,7 @@
<div class="row">
<div class="col4">
<?php echo template::select('themeSiteWidth', $module::$siteWidths, [
'label' => 'Largeur du site',
'label' => 'Largeur',
'selected' => $this->getData(['theme', 'site', 'width'])
]); ?>
</div>
@ -39,14 +39,14 @@
</div>
<div class="col4">
<?php echo template::select('themeSiteShadow', $module::$shadows, [
'label' => 'Ombre sur les bords du site',
'label' => 'Ombre',
'selected' => $this->getData(['theme', 'site', 'shadow'])
]); ?>
</div>
</div>
<div class="row">
<div class="col6">
<?php echo template::checkbox('themeSiteMargin', true, 'Pas de marge au-dessus et en-dessous du site', [
<?php echo template::checkbox('themeSiteMargin', true, 'Pas de marge au-dessus et en dessous du site', [
'checked' => $this->getData(['theme', 'site', 'margin'])
]); ?>
</div>

View File

@ -82,7 +82,7 @@ class translate extends common
// Upload et sauver le fichier de langue
$response = json_decode(helper::getUrlContents(common::ZWII_UI_URL . $lang . '.json'), true);
if ($response !== false) {
$response = file_put_contents(self::I18N_DIR . $lang . '.json', json_encode($response, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT));
$response = file_put_contents(self::I18N_DIR . $lang . '.json', json_encode($response, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT));
// Mettre à jour le descripteur
$enumsStore = json_decode(helper::getUrlContents(common::ZWII_UI_URL . 'languages.json'), true);
$enums = $this->getData(['languages']);
@ -168,6 +168,31 @@ class translate extends common
public function index()
{
/**
* Met à jour les dictionnaires des langues depuis les modèles installés
*/
// Langues installées
$installedUI = $this->getData(['languages']);
// Check si la langue est bien disponible sinon la supprime de la BDD
if ($installedUI) {
foreach ($installedUI as $key => $value)
if (file_exists(self::I18N_DIR . $key . '.json' ) === false ) {
$this->deleteData(['languages', $key]);
}
}
// Langues disponibles avec la mise à jour
$store = json_decode(file_get_contents('core/module/install/ressource/i18n/languages.json'), true);
$store = $store['languages'];
foreach($installedUI as $key => $value) {
if (isset($store[$key]) && $store[$key]['version'] > $value['version']) {
$this->setData(['languages', $key, $store[$key]]);
}
}
// Préparation du formulaire
// -------------------------
@ -231,12 +256,14 @@ class translate extends common
helper::dateUTF8('%d/%m/%Y', $value['date']),
//self::$i18nUI === $file ? helper::translate('Interface') : '',
'',
/*
template::button('translateContentLanguageUIEdit' . $file, [
'href' => helper::baseUrl() . $this->getUrl(0) . '/edit/' . $file,
'value' => template::ico('pencil'),
'help' => 'Éditer',
'disabled' => 'fr_FR' === $file
]),
*/
template::button('translateContentLanguageUIDownload' . $file, [
'class' => version_compare($installedUI[$file]['version'], $storeUI[$file]['version']) < 0 ? 'buttonGreen' : '',
'href' => helper::baseUrl() . $this->getUrl(0) . '/update/' . $file . '/' . $_SESSION['csrf'],
@ -607,34 +634,4 @@ class translate extends common
]);
}
/**
* Génère un fichier d'énumération des langues de l'UI
*/
private function getUiLanguages()
{
$enums = $this->getData(['languages']);
// Générer une énumération absente
if (empty($enums)) {
if (is_dir(self::I18N_DIR) === false) {
mkdir(self::I18N_DIR);
}
$dir = getcwd();
chdir(self::I18N_DIR);
$files = glob('*.json');
chdir($dir);
$enums = [];
foreach ($files as $file => $value) {
if (basename($value, '.json') === 'languages') {
continue;
}
$enums[basename($value, '.json')] = [
'version' => "?",
'date' => 1672052400
];
}
$this->setData(['languages', $enums]);
}
return ($enums);
}
}

View File

@ -21,12 +21,12 @@
<div class="row">
<div class="col6">
<?php echo template::select('translateFormCopySource', $module::$languagesInstalled, [
'label' => 'De'
'label' => 'Source'
]); ?>
</div>
<div class="col6">
<?php echo template::select('translateFormCopyTarget', $module::$languagesTarget, [
'label' => 'Vers'
'label' => 'Cible'
]); ?>
</div>
</div>

View File

@ -27,6 +27,7 @@
<div class="col6">
<?php echo template::date('translateEditDate', [
'label' => 'Date de publication',
'type' => 'datetime-local',
'value' => $this->getData(['languages', $this->getUrl(2), 'date'])
]); ?>
</div>

View File

@ -38,7 +38,7 @@
<?php echo helper::translate('Langues installées'); ?>
</h4>
<?php if ($module::$languagesUiInstalled): ?>
<?php echo template::table([2, 1, 1, 4, 1, 1, 1], $module::$languagesUiInstalled, ['Langues', 'Version', 'Date', '', '', '', '']); ?>
<?php echo template::table([2, 1, 1, 5, 1, 1], $module::$languagesUiInstalled, ['Langues', 'Version', 'Date', '', '', '']); ?>
<?php endif; ?>
</div>
</div>

View File

@ -1,2 +1,5 @@
id;nom;prenom;email;groupe
jbon;Bon;Jean;jean.bon@email.fr;1
jm1;Membre1;Jean;jean.membre1@email.fr;1
am2;Membre2;Albert;albert.membre2@email.fr;1
jrediteur;Editeur;Robert;robert.editeur@email.fr;2
padmin;Dupuis;Admin;paul.admin@email.fr;3

1 id nom prenom email groupe
2 jbon jm1 Bon Membre1 Jean jean.bon@email.fr jean.membre1@email.fr 1
3 am2 Membre2 Albert albert.membre2@email.fr 1
4 jrediteur Editeur Robert robert.editeur@email.fr 2
5 padmin Dupuis Admin paul.admin@email.fr 3

View File

@ -21,11 +21,12 @@ class user extends common
'delete' => self::GROUP_ADMIN,
'import' => self::GROUP_ADMIN,
'index' => self::GROUP_ADMIN,
'template' => self::GROUP_ADMIN,
'edit' => self::GROUP_MEMBER,
'logout' => self::GROUP_MEMBER,
'forgot' => self::GROUP_VISITOR,
'login' => self::GROUP_VISITOR,
'reset' => self::GROUP_VISITOR
'reset' => self::GROUP_VISITOR,
];
public static $users = [];
@ -107,7 +108,8 @@ class user extends common
'Un administrateur vous a créé un compte sur le site ' . $this->getData(['locale', 'title']) . '. Vous trouverez ci-dessous les détails de votre compte.<br><br>' .
'<strong>Identifiant du compte :</strong> ' . $this->getInput('userAddId') . '<br>' .
'<small>Nous ne conservons pas les mots de passe, en conséquence nous vous conseillons de conserver ce message tant que vous ne vous êtes pas connecté. Vous pourrez modifier votre mot de passe après votre première connexion.</small>',
null
null,
$this->getData(['config', 'smtp', 'from']),
);
}
// Valeurs en sortie
@ -300,18 +302,11 @@ class user extends common
}
// Langues disponibles pour l'interface de l'utilisateur
if (is_dir(self::I18N_DIR)) {
$dir = getcwd();
chdir(self::I18N_DIR);
$files = glob('*.json');
chdir($dir);
}
foreach ($files as $file) {
// La langue est-elle référencée ?
if (array_key_exists(basename($file, '.json'), self::$languages)) {
self::$languagesInstalled[basename($file, '.json')] = self::$languages[basename($file, '.json')];
}
self::$languagesInstalled = $this->getData(['languages']);
foreach (self::$languagesInstalled as $lang => $datas) {
self::$languagesInstalled[$lang] = self::$languages[$lang];
}
// Valeurs en sortie
$this->addOutput([
'title' => $this->getData(['user', $this->getUrl(2), 'firstname']) . ' ' . $this->getData(['user', $this->getUrl(2), 'lastname']),
@ -341,7 +336,8 @@ class user extends common
'Vous avez demandé à changer le mot de passe lié à votre compte. Vous trouverez ci-dessous un lien vous permettant de modifier celui-ci.<br><br>' .
'<a href="' . helper::baseUrl() . 'user/reset/' . $userId . '/' . $uniqId . '" target="_blank">' . helper::baseUrl() . 'user/reset/' . $userId . '/' . $uniqId . '</a><br><br>' .
'<small>Si nous n\'avez pas demandé à réinitialiser votre mot de passe, veuillez ignorer ce mail.</small>',
null
null,
$this->getData(['config', 'smtp', 'from']),
);
// Valeurs en sortie
$this->addOutput([
@ -377,7 +373,7 @@ class user extends common
self::$users[] = [
$userId,
$userFirstname . ' ' . $this->getData(['user', $userId, 'lastname']),
self::$groups[$this->getData(['user', $userId, 'group'])],
helper::translate(self::$groups[$this->getData(['user', $userId, 'group'])]),
template::button('userEdit' . $userId, [
'href' => helper::baseUrl() . 'user/edit/' . $userId . '/' . $_SESSION['csrf'],
'value' => template::ico('pencil'),
@ -712,7 +708,9 @@ class user extends common
'Bonjour <strong>' . $item['prenom'] . ' ' . $item['nom'] . '</strong>,<br><br>' .
'Un administrateur vous a créé un compte sur le site ' . $this->getData(['locale', 'title']) . '. Vous trouverez ci-dessous les détails de votre compte.<br><br>' .
'<strong>Identifiant du compte :</strong> ' . $userId . '<br>' .
'<small>Un mot de passe provisoire vous été attribué, à la première connexion cliquez sur Mot de passe Oublié.</small>'
'<small>Un mot de passe provisoire vous été attribué, à la première connexion cliquez sur Mot de passe Oublié.</small>',
null,
$this->getData(['config', 'smtp', 'from']),
);
if ($sent === true) {
// Mail envoyé changement de l'icône
@ -752,4 +750,20 @@ class user extends common
'state' => $success
]);
}
/**
* Télécharge un modèle
*/
public function template() {
$file = 'template.csv';
$path = 'core/module/user/ressource/';
// Téléchargement du CSV
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
header('Content-Disposition: attachment; filename="' . $file . '"');
header('Content-Length: ' . filesize($path . $file));
readfile($path . $file);
exit();
}
}

View File

@ -40,7 +40,7 @@
]); ?>
<?php echo template::mail('userAddMail', [
'autocomplete' => 'off',
'label' => 'Adresse mail'
'label' => 'Adresse électronique'
]); ?>
</div>
</div>

View File

@ -53,7 +53,7 @@
]); ?>
<?php echo template::mail('userEditMail', [
'autocomplete' => 'off',
'label' => 'Adresse mail',
'label' => 'Adresse électronique',
'value' => $this->getData(['user', $this->getUrl(2), 'mail'])
]); ?>
</div>

View File

@ -7,7 +7,7 @@
'value' => template::ico('left')
]); ?>
</div>
<div class="col1">
<?php /**echo template::button('userHelp', [
'href' => 'https://doc.zwiicms.fr/importation-d-une-liste-d-utilisateurs',
'target' => '_blank',
@ -15,8 +15,13 @@
'class' => 'buttonHelp',
'help' => 'Consulter l\'aide en ligne'
]);*/ ?>
<div class="col1 offset8">
<?php echo template::button('userImporTemplate', [
'href' => helper::baseUrl() . 'user/template',
'value' => template::ico('table')
]); ?>
</div>
<div class="col2 offset8">
<div class="col2">
<?php echo template::submit('userImportSubmit', [
'value' => 'Importer'
]); ?>

View File

@ -10,4 +10,4 @@
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.fr/
*/
$(".userDelete").on("click",(function(){var _this=$(this);return message="<?php echo helper::translate('Confirmer la suppression de cet utilisateur');?>",core.confirm(message,(function(){$(location).attr("href",_this.attr("href"))}))}));
$(".userDelete").on("click",(function(){var _this=$(this);return message="<?php echo helper::translate('Confirmer la suppression de cet utilisateur');?>",core.confirm(message,(function(){$(location).attr("href",_this.attr("href"))}))}));

View File

@ -35,7 +35,7 @@
]); ?>
</div>
<div class="col4 textAlignRight">
<a href="<?php echo helper::baseUrl(); ?>user/forgot/<?php echo $this->getUrl(2); ?>">Mot de passe perdu ?</a>
<a href="<?php echo helper::baseUrl(); ?>user/forgot/<?php echo $this->getUrl(2);?>"><?php echo helper::translate('Mot de passe perdu'); ?></a>
</div>
</div>
<div class="row">

View File

@ -2,7 +2,7 @@
.CodeMirror {
/* Set height, width, borders, and global font properties here */
font-family: monospace;
font-family: Arial, monospace;
height: 300px;
color: black;
direction: ltr;

View File

@ -14,6 +14,7 @@ class UploadHandler
{
protected $options;
protected $response;
// PHP File Upload error message codes:
// http://php.net/manual/en/features.file-upload.errors.php

View File

@ -353,8 +353,8 @@ class imageLib {
// *** Get optimal width and height - based on $option
$dimensionsArray = $this->getDimensions($newWidth, $newHeight, $option);
$optimalWidth = $dimensionsArray['optimalWidth'];
$optimalHeight = $dimensionsArray['optimalHeight'];
$optimalWidth = (int) $dimensionsArray['optimalWidth'];
$optimalHeight = (int) $dimensionsArray['optimalHeight'];
// *** Resample - create image canvas of x, y size
$this->imageResized = imagecreatetruecolor($optimalWidth, $optimalHeight);
@ -463,7 +463,7 @@ class imageLib {
else
{
$color = imagecolorallocate($im, $this->fillColorArray['r'], $this->fillColorArray['g'], $this->fillColorArray['b']);
imagefilledrectangle($im, 0, 0, $width, $height, $color);
imagefilledrectangle($im, 0, 0, (int)$width, (int)$height, $color);
}
}
@ -483,8 +483,8 @@ class imageLib {
// *** Get cropping co-ordinates
$cropArray = $this->getCropPlacing($optimalWidth, $optimalHeight, $newWidth, $newHeight, $cropPos);
$cropStartX = $cropArray['x'];
$cropStartY = $cropArray['y'];
$cropStartX = (int)$cropArray['x'];
$cropStartY = (int)$cropArray['y'];
// *** Crop this bad boy
$crop = imagecreatetruecolor($newWidth, $newHeight);

View File

@ -735,8 +735,9 @@ function fix_filename($str, $config, $is_folder = false)
}
if ($config['transliteration']) {
// Le site est en UTF8
if (!mb_detect_encoding($str, 'UTF-8', true)) {
$str = utf8_encode($str);
$str = mb_convert_encoding($str, 'UTF-8', mb_list_encodings());
}
if (function_exists('transliterator_transliterate')) {
$str = transliterator_transliterate('Any-Latin; Latin-ASCII', $str);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,145 +0,0 @@
<?php
return array(
'Select' => 'Seç',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => 'Sil',
'Open' => 'Aç',
'Confirm_del' => 'Bu faylı silmek istədiyinizdə əminsinizmi?',
'All' => 'Hamısı',
'Files' => 'Fayllar',
'Images' => 'Şəkillər',
'Archives' => 'Arxivlər',
'Error_Upload' => 'Yükləmək istədiyiniz fayl maksimum limiti keçdi.',
'Error_extension' => 'Fayl uzantısı icazəsi yoxdur.',
'Upload_file' => 'Fayl Yüklə',
'Filters' => 'Filtrlər',
'Videos' => 'Videolar',
'Music' => 'Mahnılar',
'New_Folder' => 'Yeni Folder',
'Folder_Created' => 'Folder müvəffəqiyyətlə yaradıldı.',
'Existing_Folder' => 'Mövcud folder',
'Confirm_Folder_del' => 'Bu folderi və içindəkiləri silmək istədiyinizə əminsinizmi?',
'Return_Files_List' => 'Faylların siyahısına geri qayıt',
'Preview' => 'İlk baxış',
'Download' => 'Yüklə',
'Insert_Folder_Name' => 'Folder adı əlavə et:',
'Root' => 'kök',
'Rename' => 'Yenidən Adlandır',
'Back' => 'geri',
'View' => 'Görünüş',
'View_list' => 'List görünüşü',
'View_columns_list' => 'Sütunlu list görünüşü',
'View_boxes' => 'Qutu görünüşü',
'Toolbar' => 'Alətlər Paneli',
'Actions' => 'Fəaliyyətlər',
'Rename_existing_file' => 'Bu fayl var artıq',
'Rename_existing_folder' => 'Bu folder var artıq',
'Empty_name' => 'Ad sahəsi boşdur.',
'Text_filter' => 'filtrlə...',
'Swipe_help' => 'Variantları görmək üçün file/folder adına tıklayın',
'Upload_base' => 'Normal Yükləmə',
'Upload_base_help' => "Drag & Drop files(modern browsers) or click in upper button to Add the file(s) and click on Start upload. When the upload is complete, click the 'Return to files list' button.",
'Upload_add_files' => 'Add file(s)',
'Upload_start' => 'Start upload',
'Upload_error_messages' =>array(
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
3 => 'The uploaded file was only partially uploaded',
4 => 'No file was uploaded',
6 => 'Missing a temporary folder',
7 => 'Failed to write file to disk',
8 => 'A PHP extension stopped the file upload',
'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini',
'max_file_size' => 'File is too big',
'min_file_size' => 'File is too small',
'accept_file_types' => 'Filetype not allowed',
'max_number_of_files' => 'Maximum number of files exceeded',
'max_width' => 'Image exceeds maximum width',
'min_width' => 'Image requires a minimum width',
'max_height' => 'Image exceeds maximum height',
'min_height' => 'Image requires a minimum height',
'abort' => 'File upload aborted',
'image_resize' => 'Failed to resize image'
),
'Upload_url' => 'From url',
'Type_dir' => 'Kataloq',
'Type' => 'Növ',
'Dimension' => 'Ölçü',
'Size' => 'Çəki',
'Date' => 'Tarix',
'Filename' => 'Fayl adı',
'Operations' => 'Əməliyyatlar',
'Date_type' => 'd-m-Y',
'OK' => 'Razıyam',
'Cancel' => 'Ləğv Et',
'Sorting' => 'sıralama',
'Show_url' => 'URL göstər',
'Extract' => 'bura çıxart',
'File_info' => 'fayl məlumatı',
'Edit_image' => 'şəkli redaktə et',
'Duplicate' => 'Dublikat',
'Folders' => 'Folders',
'Copy' => 'Copy',
'Cut' => 'Cut',
'Paste' => 'Paste',
'CB' => 'CB', // clipboard
'Paste_Here' => 'Paste to this directory',
'Paste_Confirm' => 'Are you sure you want to paste to this directory? This will overwrite existing files/folders if encountered any.',
'Paste_Failed' => 'Failed to paste file(s)',
'Clear_Clipboard' => 'Clear clipboard',
'Clear_Clipboard_Confirm' => 'Are you sure you want to clear the clipboard?',
'Files_ON_Clipboard' => 'There are files on the clipboard.',
'Copy_Cut_Size_Limit' => 'The selected files/folders are too big to %s. Limit: %d MB/operation', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'You selected too many files/folders to %s. Limit: %d files/operation', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'You are not allowed to %s files.', // %s(1) = cut or copy => %s(2) = files or folders
'Aviary_No_Save' => 'Could not save image',
'Zip_No_Extract' => 'Could not extract. File might be corrupt.',
'Zip_Invalid' => 'This extension is not supported. Valid: zip, gz, tar.',
'Dir_No_Write' => 'The directory you selected is not writable.',
'Function_Disabled' => 'The %s function has been disabled by the server.', // %s = cut or copy
'File_Permission' => 'File permission',
'File_Permission_Not_Allowed' => 'Changing %s permissions are not allowed.', // %s = files or folders
'File_Permission_Recursive' => 'Apply recursively?',
'File_Permission_Wrong_Mode' => "The supplied permission mode is incorrect.",
'User' => 'User',
'Group' => 'Group',
'Yes' => 'Yes',
'No' => 'No',
'Lang_Not_Found' => 'Could not find language.',
'Lang_Change' => 'Change the language',
'File_Not_Found' => 'Could not find the file.',
'File_Open_Edit_Not_Allowed' => 'You are not allowed to %s this file.', // %s = open or edit
'Edit' => 'Edit',
'Edit_File' => "Edit file's content",
'File_Save_OK' => "File successfully saved.",
'File_Save_Error' => "There was an error while saving the file.",
'New_File' => 'New File',
'No_Extension' => 'You have to add a file extension.',
'Valid_Extensions' => 'Valid extensions: %s', // %s = txt => log etc.
'Upload_message' => "Drop file here to upload",
'SERVER ERROR' => "SERVER ERROR",
'forbiden' => "Forbiden",
'wrong path' => "Wrong path",
'wrong name' => "Wrong name",
'wrong extension' => "Wrong extension",
'wrong option' => "Wrong option",
'wrong data' => "Wrong data",
'wrong action' => "Wrong action",
'wrong sub-action' => "Wrong sub-actio",
'no action passed' => "No action passed",
'no path' => "No path",
'no file' => "No file",
'view type number missing' => "View type number missing",
'Not enough Memory' => "Not enough Memory",
'max_size_reached' => "Your image folder has reach its maximale size of %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Total size",
);

View File

@ -1,145 +0,0 @@
<?php
return array(
'Select' => 'Избери',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => 'Изтрий',
'Open' => 'Отваряне',
'Confirm_del' => 'Сигурни ли сте, че искате да изтриете този файл?',
'All' => 'Всичко',
'Files' => 'Файла',
'Images' => 'Изображения',
'Archives' => 'Архиви',
'Error_Upload' => 'Каченият файл надминава максимално разрешената големина.',
'Error_extension' => 'Това файлово разширение не е позволено.',
'Upload_file' => 'Качете файл',
'Filters' => 'Папка',
'Videos' => 'Видео',
'Music' => 'Музика',
'New_Folder' => 'Нова папка',
'Folder_Created' => 'Папката е правилно създадена',
'Existing_Folder' => 'Съществуваща папка',
'Confirm_Folder_del' => 'Сигурни ли сте, че искате да изтриете папката и всичко => което се съдържа с нея?',
'Return_Files_List' => 'Връщане към списъка с файлове',
'Preview' => 'Преглед',
'Download' => 'Свали',
'Insert_Folder_Name' => 'Въведете име на папката:',
'Root' => 'Основна',
'Rename' => 'Преименуване',
'Back' => 'Обратно',
'View' => 'Изглед',
'View_list' => 'Списък',
'View_columns_list' => 'Колони',
'View_boxes' => 'Кутии',
'Toolbar' => 'Лента с инструменти',
'Actions' => 'Действия',
'Rename_existing_file' => 'Файлът вече съществува',
'Rename_existing_folder' => 'Папката вече съществува',
'Empty_name' => 'Името на файла е празно',
'Text_filter' => 'текстов филтър',
'Swipe_help' => 'Плъзнете името на файла/папката за опции',
'Upload_base' => 'Базово качване',
'Upload_base_help' => "Drag & Drop files(modern browsers) or click in upper button to Add the file(s) and click on Start upload. When the upload is complete, click the 'Return to files list' button.",
'Upload_add_files' => 'Add file(s)',
'Upload_start' => 'Start upload',
'Upload_error_messages' =>array(
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
3 => 'The uploaded file was only partially uploaded',
4 => 'No file was uploaded',
6 => 'Missing a temporary folder',
7 => 'Failed to write file to disk',
8 => 'A PHP extension stopped the file upload',
'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini',
'max_file_size' => 'File is too big',
'min_file_size' => 'File is too small',
'accept_file_types' => 'Filetype not allowed',
'max_number_of_files' => 'Maximum number of files exceeded',
'max_width' => 'Image exceeds maximum width',
'min_width' => 'Image requires a minimum width',
'max_height' => 'Image exceeds maximum height',
'min_height' => 'Image requires a minimum height',
'abort' => 'File upload aborted',
'image_resize' => 'Failed to resize image'
),
'Upload_url' => 'From url',
'Type_dir' => 'папка',
'Type' => 'Тип',
'Dimension' => 'Размер',
'Size' => 'Големина',
'Date' => 'Дата',
'Filename' => 'Име',
'Operations' => 'Операции',
'Date_type' => 'y-m-d',
'OK' => 'ОК',
'Cancel' => 'Отказ',
'Sorting' => 'сортиране',
'Show_url' => 'покажи URL',
'Extract' => 'разархивирай тук',
'File_info' => 'информация за файл',
'Edit_image' => 'редактирай изображение',
'Duplicate' => 'Дубликат',
'Folders' => 'Папки',
'Copy' => 'Копиране',
'Cut' => 'Изрязване',
'Paste' => 'Поставяне',
'CB' => 'CB', // clipboard
'Paste_Here' => 'Постави в тази папка',
'Paste_Confirm' => 'Сигурни ли сте, че искате да поставите в тази папка? Това може да презапише файловете в нея.',
'Paste_Failed' => 'Грешка при поставянето на файла/овете',
'Clear_Clipboard' => 'Изчисти клипборда',
'Clear_Clipboard_Confirm' => 'Сигурни ли сте, че искате да изчистите клипборда?',
'Files_ON_Clipboard' => 'Има файлове в клипборда.',
'Copy_Cut_Size_Limit' => 'Избраните файлове/папки са прекалено големи за %s. Лимит: %d MB/действие', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'Избрали сте прекаленено много файлове/папки за %s. Лимит: %d файла/действие', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'Нямате право за %s на файлове.', // %s(1) = cut or copy => %s(2) = files or folders
'Aviary_No_Save' => 'Изображението не може да бъде записано',
'Zip_No_Extract' => 'Невъзможно разархивиране. Файлът вероятно е повреден.',
'Zip_Invalid' => 'Това разширене не се поддържа. Валидни: zip, gz, tar.',
'Dir_No_Write' => 'Нямате права за запис в избраната папка.',
'Function_Disabled' => '%s-то е забранено на сървъра.', // %s = cut or copy
'File_Permission' => 'Файлови права',
'File_Permission_Not_Allowed' => 'Не е разрешена промяната на права за %s.', // %s = files or folders
'File_Permission_Recursive' => 'Рекурсивно прилагане?',
'File_Permission_Wrong_Mode' => "Зададените права са грешни.",
'User' => 'Потребител',
'Group' => 'Група',
'Yes' => 'Да',
'No' => 'Не',
'Lang_Not_Found' => 'Езикът не може да бъде намерен.',
'Lang_Change' => 'Смени езика',
'File_Not_Found' => 'Файлът не може да бъде намерен.',
'File_Open_Edit_Not_Allowed' => 'Нямате разрешение за %s на този файл.', // %s = open or edit
'Edit' => 'Редакция',
'Edit_File' => "Редакция на съдържанието на файла",
'File_Save_OK' => "Файлът е успешно записан.",
'File_Save_Error' => "Възникна грешка при записването на файла.",
'New_File' => 'Нов файл',
'No_Extension' => 'Трябва да зададете разширение на файла.',
'Valid_Extensions' => 'Валидни разширения: %s', // %s = txt => log etc.
'Upload_message' => "Провлачете и спуснете файла тук за да го качите.",
'SERVER ERROR' => "СЪРВЪРНА ГРЕШКА",
'forbiden' => "Забранено",
'wrong path' => "Грешен път",
'wrong name' => "Грешно име",
'wrong extension' => "Грешно разширение",
'wrong option' => "Грешна опция",
'wrong data' => "Грешни данни",
'wrong action' => "Грешно действие",
'wrong sub-action' => "Грешно вторично действие",
'no action passed' => "Не е подадено действие",
'no path' => "Няма път",
'no file' => "Няма файл",
'view type number missing' => "Номерът на прегледа липсва",
'Not enough Memory' => "Недостатъчна памет",
'max_size_reached' => "Вашата папка за изображения достигна максимумът от %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Общ размер",
);

View File

@ -1,124 +0,0 @@
<?php
return array(
'Select' => 'Seleccionar',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => 'Eliminar',
'Open' => 'Obrir',
'Confirm_del' => 'Segur que desitges eliminar aquest arxiu?',
'All' => 'Tots',
'Files' => 'Arxius',
'Images' => 'Imatges',
'Archives' => 'Fitxers',
'Error_Upload' => 'L\'arxiu que intenta pujar excedeix el màxim permès.',
'Error_extension' => 'L\'extensió de l\'arxiu no està permesa.',
'Upload_file' => 'Pujar',
'Filters' => 'Filtres',
'Videos' => 'Vídeos',
'Music' => 'Musica',
'New_Folder' => 'Nova carpeta',
'Folder_Created' => 'La carpeta ha estat creada exitosament.',
'Existing_Folder' => 'Carpeta existent',
'Confirm_Folder_del' => 'Segur que desitges eliminar la carpeta i tots els elements que conté?',
'Return_Files_List' => 'Tornar a la llista d\'arxius',
'Preview' => 'Vista prèvia',
'Download' => 'Descarregar',
'Insert_Folder_Name' => 'Nom de la carpeta:',
'Root' => 'Arrel',
'Rename' => 'Renombrar',
'Back' => 'Tornar',
'View' => 'Vista',
'View_list' => 'Vista de llista',
'View_columns_list' => 'Vista de columnes',
'View_boxes' => 'Vista de miniatures',
'Toolbar' => 'Barra d\'eines',
'Actions' => 'Accions',
'Rename_existing_file' => 'L\'arxiu ja existeix',
'Rename_existing_folder' => 'La carpeta ja existeix',
'Empty_name' => 'El nom es troba buit',
'Text_filter' => 'filtre de text',
'Swipe_help' => 'Deslize el nom de l\'arxiu/carpeta per mostrar les opcions',
'Upload_base' => 'Pujada d\'arxius SIMPLE',
'Upload_java' => 'Pujada d\'arxius JAVA (para arxius pesats)',
'Upload_url' => 'URL',
'Upload_java_help' => "Si el applet no carrega: 1. Assegura't de tenir Java instal·lat; sinó descarrega-ho i instal·la-ho <a href='http://java.com/en/download/'>des d'aquí</a> 2. Assegura't que el teu firewall no estigui bloquejant res.",
'Upload_base_help' => "Arrossega i deixa anar els arxius dins d'aquesta àrea o faci clic en ella (per a navegadors moderns) en cas contrari, seleccioni l'arxiu i faci clic en el botó. Quan finalitzi la pujada, faci clic en el botó superior per tornar.",
'Type_dir' => 'Carpeta',
'Type' => 'Tipus',
'Dimension' => 'Dimensions',
'Size' => 'Pes',
'Date' => 'Data',
'Filename' => 'Nom',
'Operations' => 'Operacions',
'Date_type' => 'd-m-y',
'OK' => 'OK',
'Cancel' => 'Cancel·lar',
'Sorting' => 'Ordenar',
'Show_url' => 'Mostrar URL',
'Extract' => 'Extreure aquí',
'File_info' => 'Informació',
'Edit_image' => 'Editar imatge',
'Duplicate' => 'Duplicar',
'Folders' => 'Carpetes',
'Copy' => 'Copiar',
'Cut' => 'Tallar',
'Paste' => 'Enganxar',
'CB' => 'CB', // clipboard
'Paste_Here' => 'Enganxar en aquest directori',
'Paste_Confirm' => 'Esteu segur que voleu enganxar en aquest directori? Això sobreescriurà arxius/carpetes existents si es troba cap igual.',
'Paste_Failed' => 'No sha pogut enganxar els fitxers.',
'Clear_Clipboard' => 'Netejar portapapers',
'Clear_Clipboard_Confirm' => 'Esteu segur que voleu esborrar el portapapers?',
'Files_ON_Clipboard' => 'Hi ha arxius al Portapapers.',
'Copy_Cut_Size_Limit' => 'Els arxius/carpetes seleccionades són massa grans per %s. Limit: %d MB/operació', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'Heu seleccionat massa fitxers/carpetes a %s. Limit: %d arxiu/operació', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'No te permisos per %s els arxius.', // %s(1) = cut or copy, %s(2) = files or folders
'Aviary_No_Save' => 'No sha pogut desar la imatge.',
'Zip_No_Extract' => 'No es pot extreure. LArxiu podria estar corrupte.',
'Zip_Invalid' => 'Aquesta extensió no és suportada. Vàlid: zip, gz, tar.',
'Dir_No_Write' => 'El directori seleccionat no te permisos descriptura.',
'Function_Disabled' => 'La funció de %s no esta disponible al servidor.', // %s = cut or copy
'File_Permission' => 'Permisos darxiu',
'File_Permission_Not_Allowed' => 'La modificació dels permisos de %s no es permès.', // %s = files or folders
'File_Permission_Recursive' => 'Aplicar recursivament?',
'File_Permission_Wrong_Mode' => "El mode de permís subministrat és incorrecte..",
'User' => 'Usuari',
'Group' => 'Grup',
'Yes' => 'Si',
'No' => 'No',
'Lang_Not_Found' => 'No es pot trobar l\'idioma.',
'Lang_Change' => 'Modificar idioma',
'File_Not_Found' => 'No s\'ha pogut trobar l\'arxiu.',
'File_Open_Edit_Not_Allowed' => 'No tens permisos per obrir %s l\'arxiu.', // %s = open or edit
'Edit' => 'Modificar',
'Edit_File' => "Editar el contingut de l\'arxiu.",
'File_Save_OK' => "Arxiu desat correctament.",
'File_Save_Error' => "Hi ha hagut un error mentre es desava l\'arxiu.",
'New_File' => 'Nou arxiu',
'No_Extension' => 'Ha d\'afegir una extensió d\'arxiu.',
'Valid_Extensions' => 'Extensions valides: %s', // %s = txt,log etc.
'Upload_message' => "Arrossega arxiu aquí per carregar.",
'SERVER ERROR' => "SERVER ERROR",
'forbiden' => "Forbiden",
'wrong path' => "Wrong path",
'wrong name' => "Wrong name",
'wrong extension' => "Wrong extension",
'wrong option' => "Wrong option",
'wrong data' => "Wrong data",
'wrong action' => "Wrong action",
'wrong sub-action' => "Wrong sub-actio",
'no action passed' => "No action passed",
'no path' => "No path",
'no file' => "No file",
'view type number missing' => "View type number missing",
'Not enought Memory' => "Not enought Memory",
'max_size_reached' => "Your image folder has reach its maximale size of %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Total size",
);

View File

@ -1,145 +0,0 @@
<?php
return array(
'Select' => 'Vybrat',
'Deselect_All' => 'Zrušit vše',
'Select_All' => 'Vybrat vše',
'Erase' => 'Smazat',
'Open' => 'Otevřít',
'Confirm_del' => 'Opravdu chcete smazat tento soubor?',
'All' => 'Vše',
'Files' => 'Soubory',
'Images' => 'Obrázky',
'Archives' => 'Archivy',
'Error_Upload' => 'Nahrávaný soubor je příliš velký.',
'Error_extension' => 'Nahrávání souborů s touto příponou není povoleno.',
'Upload_file' => 'Nahrát soubor',
'Filters' => 'Filtr',
'Videos' => 'Videa',
'Music' => 'Hudba',
'New_Folder' => 'Nová složka',
'Folder_Created' => 'Složka vytvořena',
'Existing_Folder' => 'Existující složka',
'Confirm_Folder_del' => 'Opravdu chcete smazat tuto složku a její obsah?',
'Return_Files_List' => 'Zpět k seznamu souborů',
'Preview' => 'Náhled',
'Download' => 'Stáhnout',
'Insert_Folder_Name' => 'Vložte název složky:',
'Root' => 'root',
'Rename' => 'Přejmenovat',
'Back' => 'zpět',
'View' => 'Zobrazení',
'View_list' => 'Seznam souborů',
'View_columns_list' => 'Dvousloupcový seznam souborů',
'View_boxes' => 'Dlaždicové zobrazení',
'Toolbar' => 'Panel nástrojů',
'Actions' => 'Akce',
'Rename_existing_file' => 'Tento soubor již existuje',
'Rename_existing_folder' => 'Tato složka již existuje',
'Empty_name' => 'Zadali jste prázdný název',
'Text_filter' => 'textový filtr',
'Swipe_help' => 'Pro zobrazení možností klikněte na název souboru/složky.',
'Upload_base' => 'Základní nahrávání',
'Upload_base_help' => "Soubory přetáhněte (pouze moderní prohlížeče) nebo klikněte na horní tlačítko 'Přidat soubor(y)' a poté na tlačítko 'Sputit nahrávání'. Až bude nahrávání dokončeno, klikněte na 'Zpět k seznamu souborů'.",
'Upload_add_files' => 'Přidat soubor(y)',
'Upload_start' => 'Sputit nahrávání',
'Upload_error_messages' =>array(
1 => 'Nahrávaný soubor má větší velikost, než co povoluje direktiva upload_max_filesize v php.ini',
2 => 'Nahrávaný soubor má větší velikost, než co povoluje direktiva MAX_FILE_SIZE uvedená v HTML formuláři',
3 => 'Soubor byl nahrán pouze z části',
4 => 'Nebyl nahrán žádný soubor',
6 => 'Chybí dočasná složka',
7 => 'Při zapisování souboru na disk došlo k chybě',
8 => 'Nahrávání souborů zastavilo rozšížení PHP',
'post_max_size' => 'Nahrávaný soubor má větší velikost, než co povoluje direktiva post_max_size v php.ini',
'max_file_size' => 'Příliš velký soubor',
'min_file_size' => 'Příliš malý soubor',
'accept_file_types' => 'Není povolen tento typ souboru (přípona)',
'max_number_of_files' => 'Překročen maximální počet souborů',
'max_width' => 'Obrázek přesahuje maximální šířku',
'min_width' => 'Obrázek vyžaduje minimální šířku',
'max_height' => 'Obrázek přesahuje maximální výšku',
'min_height' => 'Obrázek vyžaduje minimální výšku',
'abort' => 'Nahrávání souboru bylo přerušeno',
'image_resize' => 'Nepodařilo se změnit velikost obrázku'
),
'Upload_url' => 'Z url adresy',
'Type_dir' => 'složka',
'Type' => 'Typ',
'Dimension' => 'Rozměr',
'Size' => 'Velikost',
'Date' => 'Datum',
'Filename' => 'Název',
'Operations' => 'Operace',
'Date_type' => 'd.m.Y',
'OK' => 'OK',
'Cancel' => 'Zrušit',
'Sorting' => 'Řazení',
'Show_url' => 'Zobrazit URL adresu',
'Extract' => 'Rozbalit zde',
'File_info' => 'Informace o souboru',
'Edit_image' => 'Upravit obrázek',
'Duplicate' => 'Duplikovat',
'Folders' => 'Složky',
'Copy' => 'Kopírovat',
'Cut' => 'Vyjmout',
'Paste' => 'Vložit',
'CB' => 'Schránka', // clipboard
'Paste_Here' => 'Vložit do této složky',
'Paste_Confirm' => 'Skutečně chcete vložit obsah schránky do této složky? Existující soubory či složky budou přepsány.',
'Paste_Failed' => 'Vložení selhalo',
'Clear_Clipboard' => 'Vymazat schránku',
'Clear_Clipboard_Confirm' => 'Skutečně chcete vymazat obsah schránky?',
'Files_ON_Clipboard' => 'Ve schránce jsou soubory.',
'Copy_Cut_Size_Limit' => 'Zvolené soubory/složky jsou příliš velké pro operaci %s. Limit: %d MB/operace', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'Zvolili jste příliš mnoho souborů/složek pro operaci %s. Limit: %d souborů/operace', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'Nemáte oprávnění %s.', // %s(1) = cut or copy, %s(2) = files or folders
'Aviary_No_Save' => 'Obrázek nelze uložit',
'Zip_No_Extract' => 'Archív nelze rozbalit. Soubor může být poškozen.',
'Zip_Invalid' => 'Přípona není podporována. Povolené: zip, gz, tar.',
'Dir_No_Write' => 'Vybraná složka není zapisovatelná.',
'Function_Disabled' => 'Funkce %s byla zamítnuta serverem.', // %s = cut or copy
'File_Permission' => 'Práva souboru',
'File_Permission_Not_Allowed' => 'Změna oprávnění pro %s není povolena.', // %s = files or folders
'File_Permission_Recursive' => 'Použít rekurzivně?',
'File_Permission_Wrong_Mode' => "Zadaný kód oprávnění není platný.",
'User' => 'Uživatel',
'Group' => 'Skupina',
'Yes' => 'Ano',
'No' => 'Ne',
'Lang_Not_Found' => 'Jazyk nebyl nalezen.',
'Lang_Change' => 'Změnit jazyk',
'File_Not_Found' => 'Soubor nebyl nalezen.',
'File_Open_Edit_Not_Allowed' => 'Nemáte oprávnění %s tento soubor.', // %s = open or edit
'Edit' => 'Upravit',
'Edit_File' => "Upravit obsah souboru",
'File_Save_OK' => "Soubor byl úspěšně uložen.",
'File_Save_Error' => "Došlo k chybě při ukládání souboru.",
'New_File' => 'Nový soubor',
'No_Extension' => 'Musíte doplnit příponu souboru.',
'Valid_Extensions' => 'Povolené přípony: %s', // %s = txt,log etc.
'Upload_message' => "Pro nahrání přetáhněte soubor(y) sem",
'SERVER ERROR' => "CHYBA SERVERU",
'forbiden' => "Zakázáno",
'wrong path' => "Neplatná cesta",
'wrong name' => "Neplatná název",
'wrong extension' => "Neplatná přípona",
'wrong option' => "Neplatná volba",
'wrong data' => "Neplatná data",
'wrong action' => "Neplatná akce",
'wrong sub-action' => "Neplatná podakce",
'no action passed' => "Nebyla předána žádná akce",
'no path' => "Žádná cesta",
'no file' => "Žádný soubor",
'view type number missing' => "Chybí číslo typu pro zobrazení",
'Not enough Memory' => "Nedostatek paměti",
'max_size_reached' => "Vaše složka s obrázky dosáhla maximální velikosti %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Celková velikost",
);

View File

@ -1,145 +0,0 @@
<?php
return array(
'Select' => 'Vælg',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => 'Slet',
'Open' => 'Åbn',
'Confirm_del' => 'Er du sikker på at du vil slette denne fil?',
'All' => 'Alle',
'Files' => 'Filer',
'Images' => 'Billeder',
'Archives' => 'Mapper',
'Error_Upload' => 'Den uploadede fil er større end tilladt (100MB).',
'Error_extension' => 'Fil typen er ikke tilladt.',
'Upload_file' => 'Upload',
'Filters' => 'Filter',
'Videos' => 'Videoer',
'Music' => 'Musik',
'New_Folder' => 'Ny mappe',
'Folder_Created' => 'Mappen er oprettet korrekt',
'Existing_Folder' => 'Mappen findes allerede',
'Confirm_Folder_del' => 'Er du sikker på at du vil slette mappen og alt dens indhold?',
'Return_Files_List' => 'Tilbage til fil oversigten',
'Preview' => 'Preview',
'Download' => 'Download',
'Insert_Folder_Name' => 'Indsæt mappe navn:',
'Root' => 'rod',
'Rename' => 'Omdøb',
'Back' => 'tilbage',
'View' => 'Se',
'View_list' => 'Vis liste',
'View_columns_list' => 'Søjle liste',
'View_boxes' => 'Box list',
'Toolbar' => 'Toolbar',
'Actions' => 'Handlinger',
'Rename_existing_file' => 'Filen findes allerede',
'Rename_existing_folder' => 'Mappen findes allerede',
'Empty_name' => 'Indsæt et navn',
'Text_filter' => 'tekst filter',
'Swipe_help' => 'Swipe over navnet på fil/mappe for at se muligheder',
'Upload_base' => 'Basis upload',
'Upload_base_help' => "Drag & Drop files(modern browsers) or click in upper button to Add the file(s) and click on Start upload. When the upload is complete, click the 'Return to files list' button.",
'Upload_add_files' => 'Add file(s)',
'Upload_start' => 'Start upload',
'Upload_error_messages' =>array(
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
3 => 'The uploaded file was only partially uploaded',
4 => 'No file was uploaded',
6 => 'Missing a temporary folder',
7 => 'Failed to write file to disk',
8 => 'A PHP extension stopped the file upload',
'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini',
'max_file_size' => 'File is too big',
'min_file_size' => 'File is too small',
'accept_file_types' => 'Filetype not allowed',
'max_number_of_files' => 'Maximum number of files exceeded',
'max_width' => 'Image exceeds maximum width',
'min_width' => 'Image requires a minimum width',
'max_height' => 'Image exceeds maximum height',
'min_height' => 'Image requires a minimum height',
'abort' => 'File upload aborted',
'image_resize' => 'Failed to resize image'
),
'Upload_url' => 'From url',
'Type_dir' => 'dir',
'Type' => 'Type',
'Dimension' => 'Dimensioner',
'Size' => 'Størrelse',
'Date' => 'Dato',
'Filename' => 'Filenavn',
'Operations' => 'Operationer',
'Date_type' => 'år-måned-dag',
'OK' => 'OK',
'Cancel' => 'Afbryd',
'Sorting' => 'sortering',
'Show_url' => 'Vis sti',
'Extract' => 'Fold ud her',
'File_info' => 'fil info',
'Edit_image' => 'Redigér billede',
'Duplicate' => 'Kopiér',
'Folders' => 'Mapper',
'Copy' => 'Kopiér',
'Cut' => 'Klip',
'Paste' => 'Indsæt',
'CB' => 'UKH', // clipboard
'Paste_Here' => 'Indsæt i denne mappe',
'Paste_Confirm' => 'Er du sikker på at du vil indsætte i denne mappe? Det vil overkrive allerede eksisterende filer/mapper, hvis der findes nogen.',
'Paste_Failed' => 'Det lykkedes ikke at indsætte fil(en/erne)',
'Clear_Clipboard' => 'Slet indholdet af udklipsholderen',
'Clear_Clipboard_Confirm' => 'Er du sikker på at du vil slette indholdet af udklipsholderen?',
'Files_ON_Clipboard' => 'Der findes filer i udklipsholderen.',
'Copy_Cut_Size_Limit' => 'De valgte filer/mapper er for store til at %s. Max.: %d MB/operation', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'Du har valgt for mange filer/mapper til at %s. Max.: %d filer/operation', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'Du har ikke tilladelse til at %s filer. Tal med din administrator.', // %s(1) = cut or copy, %s(2) = files or folders
'Aviary_No_Save' => 'Det var ikke muligt at gemme billedet',
'Zip_No_Extract' => 'Det var ikke muligt at hente. Filen er muligvis ødelagt.',
'Zip_Invalid' => 'Denne filtype understøttes ikke. De mulige filtyper er: zip, gz, tar.',
'Dir_No_Write' => 'Der kan ikke skrives til den valgte mappe. Kontakt din administrator.',
'Function_Disabled' => 'Denne %s funktion er slået fra af serveren.', // %s = cut or copy
'File_Permission' => 'Fil tilladelser',
'File_Permission_Not_Allowed' => 'Det er ikke tilladt at ændre tilladelsen for %s.', // %s = files or folders
'File_Permission_Recursive' => 'Gøres ved alle mapper og filer (rekursivt)?',
'File_Permission_Wrong_Mode' => "Den anvendte indstilling for tilladelse er ikke korrekt.",
'User' => 'Bruger',
'Group' => 'Gruppe',
'Yes' => 'Ja',
'No' => 'Nej',
'Lang_Not_Found' => 'Cet var ikke muligt at finde sprog-filen.',
'Lang_Change' => 'Andet sprog',
'File_Not_Found' => 'Det var ikke muligt at finde filen.',
'File_Open_Edit_Not_Allowed' => 'Du har ikke tiladelse til at %s denne fil.', // %s = open or edit
'Edit' => 'Redigér',
'Edit_File' => "Redigér filens indhold",
'File_Save_OK' => "Filen blev gemt.",
'File_Save_Error' => "Der opstod en fejl i forsøget på at gemme filen.",
'New_File' => 'Opret ny fil',
'No_Extension' => 'Husk at tilføje filtype.',
'Valid_Extensions' => 'Gyldige filtyper er: %s', // %s = txt,log etc.
'Upload_message' => "Drop file here to upload",
'SERVER ERROR' => "SERVER ERROR",
'forbiden' => "Forbiden",
'wrong path' => "Wrong path",
'wrong name' => "Wrong name",
'wrong extension' => "Wrong extension",
'wrong option' => "Wrong option",
'wrong data' => "Wrong data",
'wrong action' => "Wrong action",
'wrong sub-action' => "Wrong sub-actio",
'no action passed' => "No action passed",
'no path' => "No path",
'no file' => "No file",
'view type number missing' => "View type number missing",
'Not enough Memory' => "Not enough Memory",
'max_size_reached' => "Your image folder has reach its maximale size of %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Total size",
);

View File

@ -1,145 +0,0 @@
<?php
return array(
'Select' => 'انتخاب',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => 'حذف',
'Open' => 'بازگشایی',
'Confirm_del' => 'میخواهید این فایل را حذف کنید؟',
'All' => 'همه',
'Files' => 'فایلها',
'Images' => 'تصاویر',
'Archives' => 'آرشیو',
'Error_Upload' => 'فایل آپلود شده بیش از حداکثر اندازه مجاز است.',
'Error_extension' => 'نوع فایل مجاز نیست.',
'Upload_file' => 'آپلود',
'Filters' => 'فیلترها',
'Videos' => 'ویدئوها',
'Music' => 'موزیک',
'New_Folder' => 'پوشه جدید',
'Folder_Created' => 'پوشه به درستی ایجاد شد',
'Existing_Folder' => 'پوشه های موجود',
'Confirm_Folder_del' => 'آیا میخواهید این پوشه را با تمام محتوایش حذف کنید؟',
'Return_Files_List' => 'برگشت به لیست فایلها',
'Preview' => 'پیش نمایش',
'Download' => 'دانلود',
'Insert_Folder_Name' => 'نام پوشه:',
'Root' => 'شاخه اصلی',
'Rename' => 'تغییر نام',
'Back' => 'برگشت',
'View' => 'نمایش',
'View_list' => 'نمایش لیست',
'View_columns_list' => 'نمایش لیست ستونی',
'View_boxes' => 'نمایش باکسها',
'Toolbar' => 'نوار ابزار',
'Actions' => 'عملیات',
'Rename_existing_file' => 'فایل از قبل موجود است',
'Rename_existing_folder' => 'پوشه از قبل موجود است',
'Empty_name' => 'نام خالی است',
'Text_filter' => 'فیلتر نوشته',
'Swipe_help' => 'روی نام فایل/پوشه بروید تا گزینه های بیشتری نمایش داده شوند . ',
'Upload_base' => 'آپلودر اصلی',
'Upload_base_help' => "Drag & Drop files(modern browsers) or click in upper button to Add the file(s) and click on Start upload. When the upload is complete, click the 'Return to files list' button.",
'Upload_add_files' => 'Add file(s)',
'Upload_start' => 'Start upload',
'Upload_error_messages' =>array(
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
3 => 'The uploaded file was only partially uploaded',
4 => 'No file was uploaded',
6 => 'Missing a temporary folder',
7 => 'Failed to write file to disk',
8 => 'A PHP extension stopped the file upload',
'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini',
'max_file_size' => 'File is too big',
'min_file_size' => 'File is too small',
'accept_file_types' => 'Filetype not allowed',
'max_number_of_files' => 'Maximum number of files exceeded',
'max_width' => 'Image exceeds maximum width',
'min_width' => 'Image requires a minimum width',
'max_height' => 'Image exceeds maximum height',
'min_height' => 'Image requires a minimum height',
'abort' => 'File upload aborted',
'image_resize' => 'Failed to resize image'
),
'Upload_url' => 'From url',
'Type_dir' => 'مسیر',
'Type' => 'نوع',
'Dimension' => 'بعد',
'Size' => 'اندازه',
'Date' => 'تاریخ',
'Filename' => 'نام فایل',
'Operations' => 'عملیات',
'Date_type' => 'y-m-d',
'OK' => 'باشه',
'Cancel' => 'لغو',
'Sorting' => 'مرتب سازی',
'Show_url' => 'نمایش آدرس',
'Extract' => 'استخراج در اینجا',
'File_info' => 'اطلاعات فایل',
'Edit_image' => 'ویرایش تصویر',
'Duplicate' => 'تکرار',
'Folders' => 'پوشه ها',
'Copy' => 'کپی',
'Cut' => 'بریدن',
'Paste' => 'درج',
'CB' => 'کلیپ برد', // clipboard
'Paste_Here' => 'درج در این مسیر',
'Paste_Confirm' => 'آیا ممئن هستید که میخواهید در این مسیر درج کنید ؟ اگر فایل همنام وجود داشته باشد فایل جدید روی فایل قبلی OverWrite خواهد شد .',
'Paste_Failed' => 'خطا در درج فایل (ها) ! ',
'Clear_Clipboard' => 'پاک کردن کلیپ برد',
'Clear_Clipboard_Confirm' => 'مطمئنید که می خواهید کلیپ برد را خالی کنید ؟',
'Files_ON_Clipboard' => 'کلیپ برد حاوی فایل است .',
'Copy_Cut_Size_Limit' => 'فایل/پوشه انتخابی از حداکثر حجم مجاز برای %s بزرگتر هستند. محدودیت: %d MB/عملیات', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'تعداد فایل/پوشه های انتخابی برای %s بسیار زیاد است . محدودیت: %d فایل/عملیات', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'شما اجازه %s این فایل را ندارید .', // %s(1) = cut or copy, %s(2) = files or folders
'Aviary_No_Save' => 'نتوانست تصویر را ذخیره کند .',
'Zip_No_Extract' => 'خطا در فرآیند Unzip . ممکن است فایل آسیب دیده باشد .',
'Zip_Invalid' => 'پسوند مورد نظر پشیبانی نمیشود ، مجاز : zip, gz, tar.',
'Dir_No_Write' => 'مسیر انتخابی قابل نوشتن نیست .',
'Function_Disabled' => 'تابع %s از سمت سرور غیر فعال شده است .', // %s = cut or copy
'File_Permission' => 'دسترسی فایل',
'File_Permission_Not_Allowed' => 'تغییر دسترسی %s مجاز نمی باشد .', // %s = files or folders
'File_Permission_Recursive' => 'اعمال بازگشتی بودن؟',
'File_Permission_Wrong_Mode' => "دسترسی اعمال شده اشتباه است .",
'User' => 'کاربر',
'Group' => 'گروه',
'Yes' => 'بله',
'No' => 'خبر',
'Lang_Not_Found' => 'زبان مورد نظر یافت نشد .',
'Lang_Change' => 'تغییر زبان',
'File_Not_Found' => 'نتوانست فایل را پیدا کند .',
'File_Open_Edit_Not_Allowed' => 'شما نمیتوانید این فایل را %s کنید.', // %s = open or edit
'Edit' => 'ویرایش',
'Edit_File' => "ویرایش محتوای فایل",
'File_Save_OK' => "فایل با موفقیت ذخیره شد .",
'File_Save_Error' => "خطایی در هنگام ذخیره فایل رخ داده است .",
'New_File' => 'فایل جدید',
'No_Extension' => 'شما باید پسوند وارد کنید .',
'Valid_Extensions' => 'پسوند های مجاز : %s', // %s = txt,log etc.
'Upload_message' => "فایل ها را اینجا بکشید تا آپلود شوند ",
'SERVER ERROR' => "خطای سرور",
'forbiden' => "ممنوع",
'wrong path' => "مسیر اشتباه",
'wrong name' => "نام غیر مجاز",
'wrong extension' => "پسوند غیر مجاز",
'wrong option' => "گزینه های غیر مجاز",
'wrong data' => "دیتا اشتباه",
'wrong action' => "عمل اشتباه",
'wrong sub-action' => "خطای زیر دستور",
'no action passed' => "بدون دستور",
'no path' => "بدون مسیر",
'no file' => "بدون فایل",
'view type number missing' => "نمایش تعداد نوع های غیر مجاز",
'Not enough Memory' => "نبود فضای کافی",
'max_size_reached' => "پوشه تصویر شما به حداکثر اندازه خود [%d MB] رسیده است .", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "حجم کلی",
);

View File

@ -1,146 +0,0 @@
<?php
return array(
'Select' => 'בחר',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => 'מחק',
'Open' => 'פתח',
'Confirm_del' => 'האם אתה בטוח שברצונך למחוק את הקובץ ?',
'All' => 'הכל',
'Files' => 'קבצים',
'Images' => 'תמונות',
'Archives' => 'ארכיונים',
'Error_Upload' => 'גודל הקובץ המצורף חורג מן הגבול המותר .',
'Error_extension' => 'תבנית הקובץ או סיומת הקובץ אינן חוקיות .',
'Upload_file' => 'העלה',
'Filters' => 'סננים',
'Videos' => 'וידאו',
'Music' => 'מוזיקה',
'New_Folder' => 'תיקיה חדשה',
'Folder_Created' => 'התיקיה נוצרה .',
'Existing_Folder' => 'התיקיה קיימת',
'Confirm_Folder_del' => 'האם אתה בטוח שברצונך למחוק את התיקיה וכל קבציה ?',
'Return_Files_List' => 'חזור לרשימת קבצים',
'Preview' => 'תצוגה מקדימה',
'Download' => 'הורד',
'Insert_Folder_Name' => 'הכנס שם תיקיה:',
'Root' => 'root',
'Rename' => 'שנה שם',
'Back' => 'חזור',
'View' => 'צפה',
'View_list' => 'תצוגת רשימה',
'View_columns_list' => 'תצוגת רשימה בטורים',
'View_boxes' => 'תצוגת קופסאות',
'Toolbar' => 'סרגל כלים',
'Actions' => 'פעולות',
'Rename_existing_file' => 'הקובץ כבר קיים',
'Rename_existing_folder' => 'התיקיה כבר קיימת',
'Empty_name' => 'שם הקובץ ריק',
'Text_filter' => 'סנן טקסט',
'Swipe_help' => 'סמן את הקובץ / תיקיה על מנת להציג אפשריות',
'Upload_base' => 'רגיל',
'Upload_base_help' => "Drag & Drop files(modern browsers) or click in upper button to Add the file(s) and click on Start upload. When the upload is complete, click the 'Return to files list' button.",
'Upload_add_files' => 'Add file(s)',
'Upload_start' => 'Start upload',
'Upload_error_messages' =>array(
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
3 => 'The uploaded file was only partially uploaded',
4 => 'No file was uploaded',
6 => 'Missing a temporary folder',
7 => 'Failed to write file to disk',
8 => 'A PHP extension stopped the file upload',
'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini',
'max_file_size' => 'File is too big',
'min_file_size' => 'File is too small',
'accept_file_types' => 'Filetype not allowed',
'max_number_of_files' => 'Maximum number of files exceeded',
'max_width' => 'Image exceeds maximum width',
'min_width' => 'Image requires a minimum width',
'max_height' => 'Image exceeds maximum height',
'min_height' => 'Image requires a minimum height',
'abort' => 'File upload aborted',
'image_resize' => 'Failed to resize image'
),
'Upload_url' => 'From url',
'Type_dir' => 'תיקיה',
'Type' => 'סוג',
'Dimension' => 'מימדים',
'Size' => 'גודל',
'Date' => 'תאריך',
'Filename' => 'שם הקובץ',
'Operations' => 'פעולות',
'Date_type' => 'd-m-y',
'OK' => 'אישור',
'Cancel' => 'ביטול',
'Sorting' => 'מיון',
'Show_url' => 'הצג כתובת',
'Extract' => 'חלץ לכאן',
'File_info' => 'מאפיינים',
'Edit_image' => 'ערוך תמונה',
'Duplicate' => 'שכפל',
'Folders', 'תיקיות',
'Copy' => 'העתק',
'Cut' => 'גזור',
'Paste' => 'הדבק',
'CB', 'לוח עריכה', // clipboard
'Paste_Here' => 'הדבק לתיקיה זו',
'Paste_Confirm' => 'האם אתה בטוח שברצונך להדביק לתיקיה זו ? פעולה זו תחליף בין הקבצים במקרה של התנגשות',
'Paste_Failed' => 'נכשל בהעתקת קבצים',
'Clear_Clipboard' => 'נקה לוח עריכה',
'Clear_Clipboard_Confirm' => 'האם אתה בטוח שברצונך לנקות את לוח העריכה ?',
'Files_ON_Clipboard' => 'ישנם קבצים בלוח העריכה.',
'Copy_Cut_Size_Limit' => 'גודל הקובצים / התיקיה גדולים מדי %s. הגבלה: %d MB/לפעולה', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'בחר יותר מדי תיקיות/קבצים לפעולה %s. הגבלה: %d files/operation', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'אינך ראשי ל%s קבצים.', // %s(1) = cut or copy, %s(2) = files or folders
'Aviary_No_Save', 'לא ניתן לשמור את התמונה .',
'Zip_No_Extract', 'לא ניתן לחלץ , הקבץ פגום.',
'Zip_Invalid', 'סוג או פורמט הקובץ אינו נתמך. חוקי: zip, gz, tar.',
'Dir_No_Write', 'התיקיה שבחרת אינה ניתנת לכתיבה',
'Function_Disabled', 'ה %s פונקציה אינה פעילה.', // %s = cut or copy
'File_Permission', 'הראשות קובץ',
'File_Permission_Not_Allowed', 'שינוי %s הראשות לא ניתנת לעריכה.', // %s = files or folders
'File_Permission_Recursive', 'החל רקורסיביות?',
'File_Permission_Wrong_Mode', "הרשאות שנתנו אינן חוקיות.",
'User', 'משתמשים',
'Group', 'קבוצות',
'Yes', 'כן',
'No', 'לא',
'Lang_Not_Found', 'לא ניתן למצוא את השפה המבוקשת .',
'Lang_Change', 'החלף שפה',
'File_Not_Found', 'לא ניתן לאתר את הקובץ המבוקש.',
'File_Open_Edit_Not_Allowed', 'אינך מורשה ל%s את הקובץ.', // %s = open or edit
'Edit', 'ערוך',
'Edit_File', "ערוך את תוכן הקובץ",
'File_Save_OK', "הקובץ נשמר בהצלחה .",
'File_Save_Error', "שגיאה בעת שמירת הקובץ.",
'New_File' => 'קובץ חדש',
'No_Extension' => 'חובה לציין את סיומת הקובץ.',
'Valid_Extensions' => 'סיומות חוקיות: %s', // %s = txt,log etc.
'Upload_message' => "Drop file here to upload",
'SERVER ERROR' => "SERVER ERROR",
'forbiden' => "Forbiden",
'wrong path' => "Wrong path",
'wrong name' => "Wrong name",
'wrong extension' => "Wrong extension",
'wrong option' => "Wrong option",
'wrong data' => "Wrong data",
'wrong action' => "Wrong action",
'wrong sub-action' => "Wrong sub-actio",
'no action passed' => "No action passed",
'no path' => "No path",
'no file' => "No file",
'view type number missing' => "View type number missing",
'Not enough Memory' => "Not enough Memory",
'max_size_reached' => "Your image folder has reach its maximale size of %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Total size",
);

View File

@ -1,145 +0,0 @@
<?php
return array(
'Select' => 'Odaberi',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => 'Obriši',
'Open' => 'Otvori',
'Confirm_del' => 'Jeste li sigurni da želite obrisati ovu datoteku?',
'All' => 'Sve',
'Files' => 'Datoteke',
'Images' => 'Slike',
'Archives' => 'Kompresirane arhive',
'Error_Upload' => 'Datoteka koju želite prenesti prelazi maximalnu dopuštenu veličinu.',
'Error_extension' => 'Datoteka s tom ekstenzijom nije dopuštena.',
'Upload_file' => 'Prenesi',
'Filters' => 'Filteri',
'Videos' => 'Video zapisi',
'Music' => 'Glazba',
'New_Folder' => 'Nova mapa',
'Folder_Created' => 'Mapa je uspješno kreirana',
'Existing_Folder' => 'Postojeća mapa',
'Confirm_Folder_del' => 'Jeste li sigurni da želite obrisati ovu mapu i sve datoteke u njoj?',
'Return_Files_List' => 'Vrati se na pregled datoteka',
'Preview' => 'Pogledaj',
'Download' => 'Preuzmi',
'Insert_Folder_Name' => 'Naziv nove mape:',
'Root' => 'polazno',
'Rename' => 'Preimenuj',
'Back' => 'natrag',
'View' => 'Prikaz',
'View_list' => 'Prikaz liste',
'View_columns_list' => 'Prikaz stupac-liste',
'View_boxes' => 'Prikaz grid',
'Toolbar' => 'Alatna traka',
'Actions' => 'Radnja',
'Rename_existing_file' => 'Datoteka već postoji',
'Rename_existing_folder' => 'Mapa već postoji',
'Empty_name' => 'Naziv nije upisan',
'Text_filter' => 'filtriraj po nazivu',
'Swipe_help' => 'Povucite prstom ime datoteke / mape za prikaz mogućnosti',
'Upload_base' => 'Putanja do mape za prenesene datoteke',
'Upload_base_help' => "Drag & Drop files(modern browsers) or click in upper button to Add the file(s) and click on Start upload. When the upload is complete, click the 'Return to files list' button.",
'Upload_add_files' => 'Add file(s)',
'Upload_start' => 'Start upload',
'Upload_error_messages' =>array(
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
3 => 'The uploaded file was only partially uploaded',
4 => 'No file was uploaded',
6 => 'Missing a temporary folder',
7 => 'Failed to write file to disk',
8 => 'A PHP extension stopped the file upload',
'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini',
'max_file_size' => 'File is too big',
'min_file_size' => 'File is too small',
'accept_file_types' => 'Filetype not allowed',
'max_number_of_files' => 'Maximum number of files exceeded',
'max_width' => 'Image exceeds maximum width',
'min_width' => 'Image requires a minimum width',
'max_height' => 'Image exceeds maximum height',
'min_height' => 'Image requires a minimum height',
'abort' => 'File upload aborted',
'image_resize' => 'Failed to resize image'
),
'Upload_url' => 'From url',
'Type_dir' => 'mapa',
'Type' => 'Tip',
'Dimension' => 'Dimenzije',
'Size' => 'Veličina',
'Date' => 'Datum',
'Filename' => 'Naziv datoteke',
'Operations' => 'Radnje',
'Date_type' => 'y-m-d',
'OK' => 'U redu',
'Cancel' => 'Odustani',
'Sorting' => 'sortiranje',
'Show_url' => 'prikaži URL',
'Extract' => 'raspakiraj ovdje',
'File_info' => 'informacije',
'Edit_image' => 'uredi sliku',
'Duplicate' => 'kopiraj',
'Folders' => 'Folders',
'Copy' => 'Copy',
'Cut' => 'Cut',
'Paste' => 'Paste',
'CB' => 'CB', // clipboard
'Paste_Here' => 'Paste to this directory',
'Paste_Confirm' => 'Are you sure you want to paste to this directory? This will overwrite existing files/folders if encountered any.',
'Paste_Failed' => 'Failed to paste file(s)',
'Clear_Clipboard' => 'Clear clipboard',
'Clear_Clipboard_Confirm' => 'Are you sure you want to clear the clipboard?',
'Files_ON_Clipboard' => 'There are files on the clipboard.',
'Copy_Cut_Size_Limit' => 'The selected files/folders are too big to %s. Limit: %d MB/operation', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'You selected too many files/folders to %s. Limit: %d files/operation', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'You are not allowed to %s files.', // %s(1) = cut or copy, %s(2) = files or folders
'Aviary_No_Save' => 'Could not save image',
'Zip_No_Extract' => 'Could not extract. File might be corrupt.',
'Zip_Invalid' => 'This extension is not supported. Valid: zip, gz, tar.',
'Dir_No_Write' => 'The directory you selected is not writable.',
'Function_Disabled' => 'The %s function has been disabled by the server.', // %s = cut or copy
'File_Permission' => 'File permission',
'File_Permission_Not_Allowed' => 'Changing %s permissions are not allowed.', // %s = files or folders
'File_Permission_Recursive' => 'Apply recursively?',
'File_Permission_Wrong_Mode' => "The supplied permission mode is incorrect.",
'User' => 'User',
'Group' => 'Group',
'Yes' => 'Yes',
'No' => 'No',
'Lang_Not_Found' => 'Could not find language.',
'Lang_Change' => 'Change the language',
'File_Not_Found' => 'Could not find the file.',
'File_Open_Edit_Not_Allowed' => 'You are not allowed to %s this file.', // %s = open or edit
'Edit' => 'Edit',
'Edit_File' => "Edit file's content",
'File_Save_OK' => "File successfully saved.",
'File_Save_Error' => "There was an error while saving the file.",
'New_File' => 'New File',
'No_Extension' => 'You have to add a file extension.',
'Valid_Extensions' => 'Valid extensions: %s', // %s = txt,log etc.
'Upload_message' => "Drop file here to upload",
'SERVER ERROR' => "SERVER ERROR",
'forbiden' => "Forbiden",
'wrong path' => "Wrong path",
'wrong name' => "Wrong name",
'wrong extension' => "Wrong extension",
'wrong option' => "Wrong option",
'wrong data' => "Wrong data",
'wrong action' => "Wrong action",
'wrong sub-action' => "Wrong sub-actio",
'no action passed' => "No action passed",
'no path' => "No path",
'no file' => "No file",
'view type number missing' => "View type number missing",
'Not enough Memory' => "Not enough Memory",
'max_size_reached' => "Your image folder has reach its maximale size of %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Total size",
);

View File

@ -1,145 +0,0 @@
<?php
return array(
'Select' => 'Tallózás',
'Deselect_All' => 'Kijelölés törlése',
'Select_All' => 'Összes kijelölése',
'Erase' => 'Törlés',
'Open' => 'Megnyitás',
'Confirm_del' => 'Biztosan törlöd ezt a fájlt?',
'All' => 'Összes',
'Files' => 'fájl',
'Images' => 'Képek',
'Archives' => 'Tömörített',
'Error_Upload' => 'A kiválasztott fájl mérete túl nagy!',
'Error_extension' => 'A megadott kiterjesztésű fájl nem engedélyezett.',
'Upload_file' => 'Fájl feltöltése',
'Filters' => 'Szűrő',
'Videos' => 'Videó',
'Music' => 'Zene',
'New_Folder' => 'Új mappa',
'Folder_Created' => 'Mappa létrehozva',
'Existing_Folder' => 'Mappa már létezik',
'Confirm_Folder_del' => 'Biztosan törlöd a könyvtárat és annak tartalmát?',
'Return_Files_List' => 'Vissza a fájllistához',
'Preview' => 'Előnézet',
'Download' => 'Letöltés',
'Insert_Folder_Name' => 'Mappa neve:',
'Root' => 'root',
'Rename' => 'Átnevezés',
'Back' => 'vissza',
'View' => 'Nézet',
'View_list' => 'Lista',
'View_columns_list' => 'Oszlopok',
'View_boxes' => 'Miniatűrök',
'Toolbar' => 'Eszközök',
'Actions' => 'Műveletek',
'Rename_existing_file' => 'A fájl már létezik',
'Rename_existing_folder' => 'A mappa már létezik',
'Empty_name' => 'A név nincs megadva',
'Text_filter' => 'szűrés',
'Swipe_help' => 'Húzd az egered a fájl/mappa nevére, hogy lásd az opciókat.',
'Upload_base' => 'Féltöltés a számítógépről',
'Upload_base_help' => "Húzza ide a feltölteni kívánt fájlokat, vagy kattintson a 'Fájl(ok) hozzáadása gombra. Ha kiválasztotta a fájlokat kattintson a 'Feltöltés indítása' gomba. Miután elkészült a feltöltés kattintson a fenti 'Vissza a fájllistához' gombra.",
'Upload_add_files' => 'Fájl(ok) hozzáadása',
'Upload_start' => 'Feltöltés elindítása',
'Upload_error_messages' =>array(
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
3 => 'The uploaded file was only partially uploaded',
4 => 'No file was uploaded',
6 => 'Missing a temporary folder',
7 => 'Failed to write file to disk',
8 => 'A PHP extension stopped the file upload',
'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini',
'max_file_size' => 'A fájl mérete túl nagy!',
'min_file_size' => 'A fájl mérete túl kicsi!',
'accept_file_types' => 'Filetype not allowed',
'max_number_of_files' => 'Maximum number of files exceeded',
'max_width' => 'A kép mérete elérte a maximális szélességet!',
'min_width' => 'A kép mérete nem éri el a minimális szélességet!',
'max_height' => 'A kép mérete elérte a maximális magasságot!',
'min_height' => 'A kép mérete nem éri el a minimális magasságot!',
'abort' => 'File upload aborted',
'image_resize' => 'A kép átméretézése sikertelen!'
),
'Upload_url' => 'Feltöltés URL-ről',
'Type_dir' => 'Mappa',
'Type' => 'Típus',
'Dimension' => 'Felbontás',
'Size' => 'Méret',
'Date' => 'Dátum',
'Filename' => 'Név',
'Operations' => 'Műveletek',
'Date_type' => 'y-m-d',
'OK' => 'OK',
'Cancel' => 'Mégse',
'Sorting' => 'Rendezés',
'Show_url' => 'URL megjelenítése',
'Extract' => 'Kibontás ide',
'File_info' => 'Fájl info',
'Edit_image' => 'Kép szerkesztése',
'Duplicate' => 'Klónozás',
'Folders' => 'mappa',
'Copy' => 'Másolás',
'Cut' => 'Kivágás',
'Paste' => 'Beillesztés',
'CB' => 'VL', // clipboard
'Paste_Here' => 'Beillesztés ebbe a mappába.',
'Paste_Confirm' => 'Biztos vagy benne, hogy ebbe a mappába szeretnéd beilleszteni a fájlokat? A létező fájlok/mappák felül lesznek írva.',
'Paste_Failed' => 'A beillesztés sikertelen!',
'Clear_Clipboard' => 'Vágólap törlése',
'Clear_Clipboard_Confirm' => 'Biztosan törlöd a vágólap tartalmát?',
'Files_ON_Clipboard' => 'Fájlok találhatóak a vágólapon.',
'Copy_Cut_Size_Limit' => 'A kiválasztott fájlok/mappák túl nagyok a %shoz. Limit: %d MB/művelet', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'Túl sok fájlt választottál ki a %shoz. Limit: %d fájl/művelet', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'A %s nem engedélyezett.', // %s(1) = cut or copy, %s(2) = files or folders
'Aviary_No_Save' => 'A kép mentése sikertelen.',
'Zip_No_Extract' => 'Kicsomagolás sikertelen. Lehet, hogy korrupt a fájl.',
'Zip_Invalid' => 'Ez a kiterjesztés nem támogatott. Támogatott: zip, gz, tar.',
'Dir_No_Write' => 'A kiválasztott mappa nem írható.',
'Function_Disabled' => 'A %s funkciót letiltotta a szerver.', // %s = cut or copy
'File_Permission' => 'Engedélyek',
'File_Permission_Not_Allowed' => 'A %s jogainak a megváltoztatása nem engedélyezett.', // %s = files or folders
'File_Permission_Recursive' => 'Rekurzív beállítás az almappákra?',
'File_Permission_Wrong_Mode' => "A beírt engedély nem megfelelő.",
'User' => 'Felhasználó',
'Group' => 'Csoport',
'Yes' => 'Igen',
'No' => 'Nem',
'Lang_Not_Found' => 'A nyelv nem található.',
'Lang_Change' => 'Nyelv megváltoztatása',
'File_Not_Found' => 'A fájl nem található.',
'File_Open_Edit_Not_Allowed' => 'Nincs jogod %s a fájlt.', // %s = open or edit
'Edit' => 'Szerkesztés',
'Edit_File' => "Fájl szerkesztése",
'File_Save_OK' => "Fájl sikeresen mentve.",
'File_Save_Error' => "Hiba történt a fájl mentése közben.",
'New_File' => 'Új fájl',
'No_Extension' => 'Meg kell adnod a fájl kiterjesztését.',
'Valid_Extensions' => 'Elfogadott kiterjesztések: %s', // %s = txt,log etc.
'Upload_message' => "Drop file here to upload",
'SERVER ERROR' => "SERVER ERROR",
'forbiden' => "Forbiden",
'wrong path' => "Wrong path",
'wrong name' => "Wrong name",
'wrong extension' => "Wrong extension",
'wrong option' => "Wrong option",
'wrong data' => "Wrong data",
'wrong action' => "Wrong action",
'wrong sub-action' => "Wrong sub-actio",
'no action passed' => "No action passed",
'no path' => "No path",
'no file' => "No file",
'view type number missing' => "View type number missing",
'Not enough Memory' => "Not enough Memory",
'max_size_reached' => "Your image folder has reach its maximale size of %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Total size",
);

View File

@ -1,145 +0,0 @@
<?php
return array(
'Select' => 'Pilih',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => 'Hapus',
'Open' => 'Buka',
'Confirm_del' => 'Apakah anda yakin menghapus berkas ini?',
'All' => 'Semua',
'Files' => 'Berkas',
'Images' => 'Gambar',
'Archives' => 'Arsip',
'Error_Upload' => 'Berkas yang diubah melebihi batas ukuran yang diperbolehkan.',
'Error_extension' => 'Ekstensi berkas tidak diperbolehkan.',
'Upload_file' => 'Unggah',
'Filters' => 'Saring',
'Videos' => 'Video',
'Music' => 'Musik',
'New_Folder' => 'Folder Baru',
'Folder_Created' => 'Folder Telah Dibuat',
'Existing_Folder' => 'Folder yang ada',
'Confirm_Folder_del' => 'Apakah anda yakin menghapus folder dan semua isi didalamnya?',
'Return_Files_List' => 'Kembali ke daftar',
'Preview' => 'Pratampil',
'Download' => 'Unduh',
'Insert_Folder_Name' => 'Masukkan nama folder:',
'Root' => 'root',
'Rename' => 'Ubah nama',
'Back' => 'kembali',
'View' => 'lihat',
'View_list' => 'Tampilan Daftar',
'View_columns_list' => 'Tampilan Daftar kolom',
'View_boxes' => 'Tampilan Kotak',
'Toolbar' => 'Toolbar',
'Actions' => 'Aksi',
'Rename_existing_file' => 'Berkas Sudah ada',
'Rename_existing_folder' => 'Folder sudah ada',
'Empty_name' => 'Nama Kosong',
'Text_filter' => 'saring teks',
'Swipe_help' => 'Arahkan pada nama berkas/folder untuk melihat pilihan',
'Upload_base' => 'Basis Unggah',
'Upload_base_help' => "Drag & Drop files(modern browsers) or click in upper button to Add the file(s) and click on Start upload. When the upload is complete, click the 'Return to files list' button.",
'Upload_add_files' => 'Add file(s)',
'Upload_start' => 'Start upload',
'Upload_error_messages' =>array(
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
3 => 'The uploaded file was only partially uploaded',
4 => 'No file was uploaded',
6 => 'Missing a temporary folder',
7 => 'Failed to write file to disk',
8 => 'A PHP extension stopped the file upload',
'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini',
'max_file_size' => 'File is too big',
'min_file_size' => 'File is too small',
'accept_file_types' => 'Filetype not allowed',
'max_number_of_files' => 'Maximum number of files exceeded',
'max_width' => 'Image exceeds maximum width',
'min_width' => 'Image requires a minimum width',
'max_height' => 'Image exceeds maximum height',
'min_height' => 'Image requires a minimum height',
'abort' => 'File upload aborted',
'image_resize' => 'Failed to resize image'
),
'Upload_url' => 'From url',
'Type_dir' => 'direktori',
'Type' => 'Tipe',
'Dimension' => 'Dimensi',
'Size' => 'Ukuran',
'Date' => 'Tanggal',
'Filename' => 'Nama_berkas',
'Operations' => 'Operasi',
'Date_type' => 'y-m-d',
'OK' => 'OK',
'Cancel' => 'Cancel',
'Sorting' => 'Sortir',
'Show_url' => 'lihat URL',
'Extract' => 'extract disini',
'File_info' => 'info berkas',
'Edit_image' => 'edit gambar',
'Duplicate' => 'Duplikat',
'Folders' => 'Folders',
'Copy' => 'Copy',
'Cut' => 'Cut',
'Paste' => 'Paste',
'CB' => 'CB', // clipboard
'Paste_Here' => 'Paste to this directory',
'Paste_Confirm' => 'Are you sure you want to paste to this directory? This will overwrite existing files/folders if encountered any.',
'Paste_Failed' => 'Failed to paste file(s)',
'Clear_Clipboard' => 'Clear clipboard',
'Clear_Clipboard_Confirm' => 'Are you sure you want to clear the clipboard?',
'Files_ON_Clipboard' => 'There are files on the clipboard.',
'Copy_Cut_Size_Limit' => 'The selected files/folders are too big to %s. Limit: %d MB/operation', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'You selected too many files/folders to %s. Limit: %d files/operation', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'You are not allowed to %s files.', // %s(1) = cut or copy, %s(2) = files or folders
'Aviary_No_Save' => 'Could not save image',
'Zip_No_Extract' => 'Could not extract. File might be corrupt.',
'Zip_Invalid' => 'This extension is not supported. Valid: zip, gz, tar.',
'Dir_No_Write' => 'The directory you selected is not writable.',
'Function_Disabled' => 'The %s function has been disabled by the server.', // %s = cut or copy
'File_Permission' => 'File permission',
'File_Permission_Not_Allowed' => 'Changing %s permissions are not allowed.', // %s = files or folders
'File_Permission_Recursive' => 'Apply recursively?',
'File_Permission_Wrong_Mode' => "The supplied permission mode is incorrect.",
'User' => 'User',
'Group' => 'Group',
'Yes' => 'Yes',
'No' => 'No',
'Lang_Not_Found' => 'Could not find language.',
'Lang_Change' => 'Change the language',
'File_Not_Found' => 'Could not find the file.',
'File_Open_Edit_Not_Allowed' => 'You are not allowed to %s this file.', // %s = open or edit
'Edit' => 'Edit',
'Edit_File' => "Edit file's content",
'File_Save_OK' => "File successfully saved.",
'File_Save_Error' => "There was an error while saving the file.",
'New_File' => 'New File',
'No_Extension' => 'You have to add a file extension.',
'Valid_Extensions' => 'Valid extensions: %s', // %s = txt,log etc.
'Upload_message' => "Drop file here to upload",
'SERVER ERROR' => "SERVER ERROR",
'forbiden' => "Forbiden",
'wrong path' => "Wrong path",
'wrong name' => "Wrong name",
'wrong extension' => "Wrong extension",
'wrong option' => "Wrong option",
'wrong data' => "Wrong data",
'wrong action' => "Wrong action",
'wrong sub-action' => "Wrong sub-actio",
'no action passed' => "No action passed",
'no path' => "No path",
'no file' => "No file",
'view type number missing' => "View type number missing",
'Not enough Memory' => "Not enough Memory",
'max_size_reached' => "Your image folder has reach its maximale size of %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Total size",
);

View File

@ -1,145 +0,0 @@
<?php
return array(
'Select' => '選択',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => '消去',
'Open' => '開く',
'Confirm_del' => 'このファイルを削除しますか?',
'All' => '全て',
'Files' => 'ファイル',
'Images' => 'イメージ',
'Archives' => 'アーカイブ',
'Error_Upload' => 'アップロード可能な最大サイズを超えています。',
'Error_extension' => '拡張子が許可されていません。',
'Upload_file' => 'アップロード',
'Filters' => 'フィルタ',
'Videos' => 'ビデオ',
'Music' => '音楽',
'New_Folder' => '新規フォルダ',
'Folder_Created' => 'フォルダを作成しました',
'Existing_Folder' => '存在するフォルダ',
'Confirm_Folder_del' => 'フォルダとフォルダの中身を削除しますか?',
'Return_Files_List' => 'ファイルの一覧に戻る',
'Preview' => 'プレビュー',
'Download' => 'ダウンロード',
'Insert_Folder_Name' => 'フォルダ名の追加',
'Root' => 'ルート',
'Rename' => '名称変更',
'Back' => '戻る',
'View' => 'ビュー',
'View_list' => '一覧表示',
'View_columns_list' => 'カラム表示',
'View_boxes' => 'ボックス表示',
'Toolbar' => 'ツールバー',
'Actions' => 'アクション',
'Rename_existing_file' => 'このファイルはすでに存在しています。',
'Rename_existing_folder' => 'このフォルダはすでに存在しています。',
'Empty_name' => '名前が空です',
'Text_filter' => 'テキストフィルタ',
'Swipe_help' => 'ファイル・フォルダ名をスワイプしてオプションを表示する',
'Upload_base' => '標準アップロード',
'Upload_base_help' => "Drag & Drop files(modern browsers) or click in upper button to Add the file(s) and click on Start upload. When the upload is complete, click the 'Return to files list' button.",
'Upload_add_files' => 'Add file(s)',
'Upload_start' => 'Start upload',
'Upload_error_messages' =>array(
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
3 => 'The uploaded file was only partially uploaded',
4 => 'No file was uploaded',
6 => 'Missing a temporary folder',
7 => 'Failed to write file to disk',
8 => 'A PHP extension stopped the file upload',
'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini',
'max_file_size' => 'File is too big',
'min_file_size' => 'File is too small',
'accept_file_types' => 'Filetype not allowed',
'max_number_of_files' => 'Maximum number of files exceeded',
'max_width' => 'Image exceeds maximum width',
'min_width' => 'Image requires a minimum width',
'max_height' => 'Image exceeds maximum height',
'min_height' => 'Image requires a minimum height',
'abort' => 'File upload aborted',
'image_resize' => 'Failed to resize image'
),
'Upload_url' => 'From url',
'Type_dir' => 'ディレクトリ',
'Type' => '種類',
'Dimension' => '画像サイズ',
'Size' => 'サイズ',
'Date' => '日付',
'Filename' => 'ファイル名',
'Operations' => '操作',
'Date_type' => 'Y/m/d',
'OK' => 'OK',
'Cancel' => 'キャンセル',
'Sorting' => 'ソート',
'Show_url' => 'URL表示',
'Extract' => 'ここに解凍',
'File_info' => 'ファイル情報',
'Edit_image' => '画像編集',
'Duplicate' => '複製',
'Folders' => 'フォルダ',
'Copy' => 'コピー',
'Cut' => 'カット',
'Paste' => 'ペースト',
'CB' => 'クリップボード', // clipboard
'Paste_Here' => 'このディレクトリにペーストする',
'Paste_Confirm' => 'このディレクトリにペーストしますか?既存のファイル/フォルダは上書きされます。',
'Paste_Failed' => 'ペーストできませんでした。',
'Clear_Clipboard' => 'クリップボードの消去',
'Clear_Clipboard_Confirm' => 'クリップボード内のデータを消去しますか?',
'Files_ON_Clipboard' => 'クリップボードにファイルがあります。',
'Copy_Cut_Size_Limit' => '選択したファイルが/フォルダをsするには大きすぎます。 リミット: %d MB/操作', // %s = cut or copy
'Copy_Cut_Count_Limit' => '選択したファイルが/フォルダをsするには大きすぎます。 リミット: %d ファイル/操作', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'ファイルを %s する許可がありません。', // %s(1) = cut or copy, %s(2) = files or folders
'Aviary_No_Save' => 'イメージを保存できませんでした',
'Zip_No_Extract' => '解凍できませんでした。ファイルが破損している可能性があります。',
'Zip_Invalid' => '拡張子がサポートされてません。有効 zip, gz, tar.',
'Dir_No_Write' => '選択したディレクトリに書き込み権限がありません',
'Function_Disabled' => '%s はサーバによって無効にされています。', // %s = cut or copy
'File_Permission' => 'ファイルの権限',
'File_Permission_Not_Allowed' => '%s の権限変更は許可されていません。', // %s = files or folders
'File_Permission_Recursive' => '内包するファイルに適用しますか?',
'File_Permission_Wrong_Mode' => "供給された権限が正しくありません。",
'User' => 'ユーザー',
'Group' => 'グループ',
'Yes' => 'はい',
'No' => 'いいえ',
'Lang_Not_Found' => '言語がみつかりませんでした。',
'Lang_Change' => '言語の変更',
'File_Not_Found' => '言語ファイルがみつかりませんでした。',
'File_Open_Edit_Not_Allowed' => 'このファイルを%sことができませんでした。', // %s = open or edit
'Edit' => '編集する',
'Edit_File' => "ファイルを編集",
'File_Save_OK' => "ファイルの保存が完了しました。",
'File_Save_Error' => "ファイルの保存時にエラーが発生しました。",
'New_File' => '新規ファイル',
'No_Extension' => 'ファイルの拡張子を指定してください。',
'Valid_Extensions' => '有効な拡張子: %s', // %s = txt,log etc.
'Upload_message' => "Drop file here to upload",
'SERVER ERROR' => "SERVER ERROR",
'forbiden' => "Forbiden",
'wrong path' => "Wrong path",
'wrong name' => "Wrong name",
'wrong extension' => "Wrong extension",
'wrong option' => "Wrong option",
'wrong data' => "Wrong data",
'wrong action' => "Wrong action",
'wrong sub-action' => "Wrong sub-actio",
'no action passed' => "No action passed",
'no path' => "No path",
'no file' => "No file",
'view type number missing' => "View type number missing",
'Not enough Memory' => "Not enough Memory",
'max_size_reached' => "Your image folder has reach its maximale size of %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Total size",
);

View File

@ -1,42 +1,13 @@
<?php
return array(
'az_AZ' => 'Azərbaycan dili',
'bg_BG' => 'български език',
'ca' => 'Català, valencià',
'cs' => 'čeština, český jazyk',
'da' => 'Dansk',
'de' => 'Deutsch',
'gr_GR' => 'ελληνικά',
'en_EN' => 'English',
'es' => 'Español',
'fa' => 'فارسی',
'fr_FR' => 'Français',
'he_IL' => 'Hebrew (Israel)',
'hr' => 'Hrvatski jezik',
'hu_HU' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italiano',
'ja' => '日本',
'lt' => 'Lietuvių kalba',
'mn_MN' => 'монгол',
'nb_NO' => 'Norsk bokmål',
'nn_NO' => 'Norsk nynorsk',
'nl' => 'Nederlands, Vlaams',
'pl' => 'Język polski, polszczyzna',
'pt_BR' => 'Português(Brazil)',
'pt_PT' => 'Português',
'ro' => 'Română',
'ru' => 'Pусский язык',
'sk' => 'Slovenčina',
'sl' => 'Slovenski jezik',
'sv_SE' => 'Svenska',
'th_TH' => 'ไทย',
'tr_TR' => 'Türkçe',
'uk_UA' => 'Yкраїнська мова',
'vi' => 'Tiếng Việt',
'zh_CN' => '中文 (Zhōngwén), 汉语, 漢語',
// source: http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
);

View File

@ -1,145 +0,0 @@
<?php
return array(
'Select' => 'Pasirinkti',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => 'Ištrinti',
'Open' => 'Atidaryti',
'Confirm_del' => 'Ar tikrai norite ištrinti šį failą?',
'All' => 'Visi',
'Files' => 'Failai',
'Images' => 'Nuotraukos',
'Archives' => 'Archyvai',
'Error_Upload' => 'Failo dydis viršija nustatytą limitą.',
'Error_extension' => 'Toks failo formatas yra negalimas.',
'Upload_file' => 'Įkelti failus',
'Filters' => 'Filtruoti',
'Videos' => 'Video failai',
'Music' => 'Muzika',
'New_Folder' => 'Sukurti katalogą',
'Folder_Created' => 'Katalogas sėkmingai sukurtas',
'Existing_Folder' => 'Egzistuojantis katalogas',
'Confirm_Folder_del' => 'Ar tikrai norite ištrinti šį katalogą su visais jame esančiais failais?',
'Return_Files_List' => 'Grįžti į failų sąrašą',
'Preview' => 'Peržiūrėti',
'Download' => 'Atsisiųsti',
'Insert_Folder_Name' => 'Katalogo pavadinimas:',
'Root' => 'root',
'Rename' => 'Pervadinti',
'Back' => 'grįžti',
'View' => 'Rodymas',
'View_list' => 'Sąrašas',
'View_columns_list' => 'Stulpeliai',
'View_boxes' => 'Tinklelis',
'Toolbar' => 'Įrankių juosta',
'Actions' => 'Veiksmai',
'Rename_existing_file' => 'Toks failas jau yra sukurtas',
'Rename_existing_folder' => 'Toks katalogas jau yra sukurtas',
'Empty_name' => 'Pavadinimas negali būti tuščias',
'Text_filter' => 'ieškoti',
'Swipe_help' => 'Tempkite failo/katalogo pavadinimą, kad pamatytumėte informaciją',
'Upload_base' => 'Pagrindinis įkėlimas',
'Upload_base_help' => "Drag & Drop files(modern browsers) or click in upper button to Add the file(s) and click on Start upload. When the upload is complete, click the 'Return to files list' button.",
'Upload_add_files' => 'Add file(s)',
'Upload_start' => 'Start upload',
'Upload_error_messages' =>array(
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
3 => 'The uploaded file was only partially uploaded',
4 => 'No file was uploaded',
6 => 'Missing a temporary folder',
7 => 'Failed to write file to disk',
8 => 'A PHP extension stopped the file upload',
'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini',
'max_file_size' => 'File is too big',
'min_file_size' => 'File is too small',
'accept_file_types' => 'Filetype not allowed',
'max_number_of_files' => 'Maximum number of files exceeded',
'max_width' => 'Image exceeds maximum width',
'min_width' => 'Image requires a minimum width',
'max_height' => 'Image exceeds maximum height',
'min_height' => 'Image requires a minimum height',
'abort' => 'File upload aborted',
'image_resize' => 'Failed to resize image'
),
'Upload_url' => 'From url',
'Type_dir' => 'dir',
'Type' => 'Tipas',
'Dimension' => 'Matmenys',
'Size' => 'Dydis',
'Date' => 'Data',
'Filename' => 'Pavadinimas',
'Operations' => 'Operacijos',
'Date_type' => 'Y-m-d',
'OK' => 'Gerai',
'Cancel' => 'Atšaukti',
'Sorting' => 'rikiuoti',
'Show_url' => 'rodyti nuorodą',
'Extract' => 'Ištraukti čia',
'File_info' => 'Failo informacija',
'Edit_image' => 'redaguoti nuotrauką',
'Duplicate' => 'Sukurti kopiją',
'Folders' => 'Katalogai',
'Copy' => 'Kopijuoti',
'Cut' => 'Iškirpti',
'Paste' => 'Įklijuoti',
'CB' => 'CB', // clipboard
'Paste_Here' => 'Įklijuoti dabartiniame kataloge',
'Paste_Confirm' => 'Ar tikrai norite įklijuoti į šį katalogą? Visi failai/katalogai tokiais pačiais pavadinimais bus perrašyti.',
'Paste_Failed' => 'Nepavyko įklijuoti',
'Clear_Clipboard' => 'Išvalyti iškarpinę',
'Clear_Clipboard_Confirm' => 'Ar tikrai norite išvalyti iškarpinę?',
'Files_ON_Clipboard' => 'Iškarpinėje yra failų.',
'Copy_Cut_Size_Limit' => 'Pasirinkti failai/katalogai yra per dideli atlikti "%s" operacijai. Limitas: %d MB', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'Pasirinkote per daug failų/katalogų atlikti "%s" operacijai. Limitas: %d failų/katalogų', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'Jūs neturite teisių atlikti "%s" funkcijos failams.', // %s(1) = cut or copy, %s(2) = files or folders
'Aviary_No_Save' => 'Nepavyko išsaugoti nuotraukos',
'Zip_No_Extract' => 'Nepavyko ištraukti. Failas gali būti sugadintas.',
'Zip_Invalid' => 'Toks formatas yra neleidžiamas. Galimi formatai: zip, gz, tar.',
'Dir_No_Write' => 'Katalogas, kurį pasirinkote neturi įrašymo teisių.',
'Function_Disabled' => 'Funkcija "%s" šiame serveryje yra išjungta.', // %s = cut or copy
'File_Permission' => 'File permission',
'File_Permission_Not_Allowed' => 'Changing %s permissions are not allowed.', // %s = files or folders
'File_Permission_Recursive' => 'Apply recursively?',
'File_Permission_Wrong_Mode' => "The supplied permission mode is incorrect.",
'User' => 'User',
'Group' => 'Group',
'Yes' => 'Yes',
'No' => 'No',
'Lang_Not_Found' => 'Could not find language.',
'Lang_Change' => 'Change the language',
'File_Not_Found' => 'Could not find the file.',
'File_Open_Edit_Not_Allowed' => 'You are not allowed to %s this file.', // %s = open or edit
'Edit' => 'Edit',
'Edit_File' => "Edit file's content",
'File_Save_OK' => "File successfully saved.",
'File_Save_Error' => "There was an error while saving the file.",
'New_File' => 'New File',
'No_Extension' => 'You have to add a file extension.',
'Valid_Extensions' => 'Valid extensions: %s', // %s = txt,log etc.
'Upload_message' => "Drop file here to upload",
'SERVER ERROR' => "SERVER ERROR",
'forbiden' => "Forbiden",
'wrong path' => "Wrong path",
'wrong name' => "Wrong name",
'wrong extension' => "Wrong extension",
'wrong option' => "Wrong option",
'wrong data' => "Wrong data",
'wrong action' => "Wrong action",
'wrong sub-action' => "Wrong sub-actio",
'no action passed' => "No action passed",
'no path' => "No path",
'no file' => "No file",
'view type number missing' => "View type number missing",
'Not enough Memory' => "Not enough Memory",
'max_size_reached' => "Your image folder has reach its maximale size of %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Total size",
);

View File

@ -1,145 +0,0 @@
<?php
return array(
'Select' => 'Сонгох',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => 'Устгах',
'Open' => 'Нээх',
'Confirm_del' => 'Та энэ файлыг устгахдаа итгэлтэй байна уу?',
'All' => 'Бүгд',
'Files' => 'Файлууд',
'Images' => 'Зурагнууд',
'Archives' => 'Архивлагдсан файлууд',
'Error_Upload' => 'Хуулсан файл зөвшөөрөгдөх хэмжээнээс их байна.',
'Error_extension' => 'Файлын өргөтгөх зөвшөөрөгдөөгүй.',
'Upload_file' => 'Хуулах',
'Filters' => 'Шүүлтүүрүүд',
'Videos' => 'Бичлэгнүүд',
'Music' => 'Дуунууд',
'New_Folder' => 'Шинэ хавтас',
'Folder_Created' => 'Хавтас амжилттай үүслээ',
'Existing_Folder' => 'Давхардсан хавтас',
'Confirm_Folder_del' => 'Хавтас болон доторх бүх файлуудыг устгахдаа итгэлтэй байна уу?',
'Return_Files_List' => 'Файлын жагсаалт руу буцах',
'Preview' => 'Урьдчилан харах',
'Download' => 'Татаж авах',
'Insert_Folder_Name' => 'Хавтасны нэрийг оруулна уу:',
'Root' => 'root',
'Rename' => 'Нэрлэх',
'Back' => 'буцах',
'View' => 'Үзэх',
'View_list' => 'Жагсаалтаар харах',
'View_columns_list' => 'Баганаар харах',
'View_boxes' => 'Хайрцгаар харах',
'Toolbar' => 'Товчилсон товчнууд',
'Actions' => 'Үйлдэл',
'Rename_existing_file' => 'Файл аль хэдийнэ үүссэн байна',
'Rename_existing_folder' => 'Хавтас аль хэдийнэ үүсэн байна',
'Empty_name' => 'Нэр хоосон байна',
'Text_filter' => 'текстэн шүүлтүүр',
'Swipe_help' => 'Файл/Хавтасны нэрийг товшоод тохиргоог харна уу',
'Upload_base' => 'Энгийнээр хуулах',
'Upload_base_help' => "Drag & Drop files(modern browsers) or click in upper button to Add the file(s) and click on Start upload. When the upload is complete, click the 'Return to files list' button.",
'Upload_add_files' => 'Add file(s)',
'Upload_start' => 'Start upload',
'Upload_error_messages' =>array(
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
3 => 'The uploaded file was only partially uploaded',
4 => 'No file was uploaded',
6 => 'Missing a temporary folder',
7 => 'Failed to write file to disk',
8 => 'A PHP extension stopped the file upload',
'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini',
'max_file_size' => 'File is too big',
'min_file_size' => 'File is too small',
'accept_file_types' => 'Filetype not allowed',
'max_number_of_files' => 'Maximum number of files exceeded',
'max_width' => 'Image exceeds maximum width',
'min_width' => 'Image requires a minimum width',
'max_height' => 'Image exceeds maximum height',
'min_height' => 'Image requires a minimum height',
'abort' => 'File upload aborted',
'image_resize' => 'Failed to resize image'
),
'Upload_url' => 'From url',
'Type_dir' => 'dir',
'Type' => 'Төрөл',
'Dimension' => 'Харьцаа',
'Size' => 'Хэмжээ',
'Date' => 'Огноо',
'Filename' => 'Файлын нэр',
'Operations' => 'Үйлдэлүүд',
'Date_type' => 'y-m-d',
'OK' => 'ОК',
'Cancel' => 'Буцах',
'Sorting' => 'эрэмбэлэх',
'Show_url' => 'URL-г харах',
'Extract' => 'энд задла',
'File_info' => 'файлын мэдээлэл',
'Edit_image' => 'зураг засварлах',
'Duplicate' => 'Давхардуулах',
'Folders' => 'Folders',
'Copy' => 'Copy',
'Cut' => 'Cut',
'Paste' => 'Paste',
'CB' => 'CB', // clipboard
'Paste_Here' => 'Paste to this directory',
'Paste_Confirm' => 'Are you sure you want to paste to this directory? This will overwrite existing files/folders if encountered any.',
'Paste_Failed' => 'Failed to paste file(s)',
'Clear_Clipboard' => 'Clear clipboard',
'Clear_Clipboard_Confirm' => 'Are you sure you want to clear the clipboard?',
'Files_ON_Clipboard' => 'There are files on the clipboard.',
'Copy_Cut_Size_Limit' => 'The selected files/folders are too big to %s. Limit: %d MB/operation', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'You selected too many files/folders to %s. Limit: %d files/operation', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'You are not allowed to %s files.', // %s(1) = cut or copy, %s(2) = files or folders
'Aviary_No_Save' => 'Could not save image',
'Zip_No_Extract' => 'Could not extract. File might be corrupt.',
'Zip_Invalid' => 'This extension is not supported. Valid: zip, gz, tar.',
'Dir_No_Write' => 'The directory you selected is not writable.',
'Function_Disabled' => 'The %s function has been disabled by the server.', // %s = cut or copy
'File_Permission' => 'File permission',
'File_Permission_Not_Allowed' => 'Changing %s permissions are not allowed.', // %s = files or folders
'File_Permission_Recursive' => 'Apply recursively?',
'File_Permission_Wrong_Mode' => "The supplied permission mode is incorrect.",
'User' => 'User',
'Group' => 'Group',
'Yes' => 'Yes',
'No' => 'No',
'Lang_Not_Found' => 'Could not find language.',
'Lang_Change' => 'Change the language',
'File_Not_Found' => 'Could not find the file.',
'File_Open_Edit_Not_Allowed' => 'You are not allowed to %s this file.', // %s = open or edit
'Edit' => 'Edit',
'Edit_File' => "Edit file's content",
'File_Save_OK' => "File successfully saved.",
'File_Save_Error' => "There was an error while saving the file.",
'New_File' => 'New File',
'No_Extension' => 'You have to add a file extension.',
'Valid_Extensions' => 'Valid extensions: %s', // %s = txt,log etc.
'Upload_message' => "Drop file here to upload",
'SERVER ERROR' => "SERVER ERROR",
'forbiden' => "Forbiden",
'wrong path' => "Wrong path",
'wrong name' => "Wrong name",
'wrong extension' => "Wrong extension",
'wrong option' => "Wrong option",
'wrong data' => "Wrong data",
'wrong action' => "Wrong action",
'wrong sub-action' => "Wrong sub-actio",
'no action passed' => "No action passed",
'no path' => "No path",
'no file' => "No file",
'view type number missing' => "View type number missing",
'Not enough Memory' => "Not enough Memory",
'max_size_reached' => "Your image folder has reach its maximale size of %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Total size",
);

View File

@ -1,145 +0,0 @@
<?php
return array(
'Select' => 'Velg',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => 'Slett',
'Open' => 'Åpne',
'Confirm_del' => 'Er du sikker på at du vil slette denne filen?',
'All' => 'Alle',
'Files' => 'Filer',
'Images' => 'Bilder',
'Archives' => 'Arkiv',
'Error_Upload' => 'Den opplastede filen overskrider maksimal tillatt størrelse.',
'Error_extension' => 'Filtypen er ikke tillatt.',
'Upload_file' => 'Last opp fil',
'Filters' => 'Filter',
'Videos' => 'Videoer',
'Music' => 'Musikk',
'New_Folder' => 'Ny mappe',
'Folder_Created' => 'Mappe opprettet',
'Existing_Folder' => 'Eksisterende mappe',
'Confirm_Folder_del' => 'Er du sikker på at du vil slette mappen og alt innholdet?',
'Return_Files_List' => 'Tilbake til filoversikten',
'Preview' => 'Forhåndsvisning',
'Download' => 'Last ned',
'Insert_Folder_Name' => 'Gi mappen et navn:',
'Root' => 'Rot',
'Rename' => 'Gi nytt navn',
'Back' => 'Tilbake',
'View' => 'Visning',
'View_list' => 'Listevisning',
'View_columns_list' => 'Side ved side',
'View_boxes' => 'Boksvisning',
'Toolbar' => 'Verktøylinje',
'Actions' => 'Gjøremål',
'Rename_existing_file' => 'Filen er allerede opprettet',
'Rename_existing_folder' => 'Mappen er allerede opprettet',
'Empty_name' => 'Tomt navn',
'Text_filter' => 'Tekst-filter',
'Swipe_help' => 'Sveip filnavnet/mappenavnet for å vise alternativer',
'Upload_base' => 'Vanlig opplasting',
'Upload_base_help' => "Drag & Drop files(modern browsers) or click in upper button to Add the file(s) and click on Start upload. When the upload is complete, click the 'Return to files list' button.",
'Upload_add_files' => 'Add file(s)',
'Upload_start' => 'Start upload',
'Upload_error_messages' =>array(
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
3 => 'The uploaded file was only partially uploaded',
4 => 'No file was uploaded',
6 => 'Missing a temporary folder',
7 => 'Failed to write file to disk',
8 => 'A PHP extension stopped the file upload',
'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini',
'max_file_size' => 'File is too big',
'min_file_size' => 'File is too small',
'accept_file_types' => 'Filetype not allowed',
'max_number_of_files' => 'Maximum number of files exceeded',
'max_width' => 'Image exceeds maximum width',
'min_width' => 'Image requires a minimum width',
'max_height' => 'Image exceeds maximum height',
'min_height' => 'Image requires a minimum height',
'abort' => 'File upload aborted',
'image_resize' => 'Failed to resize image'
),
'Upload_url' => 'From url',
'Type_dir' => 'Mappe',
'Type' => 'Type',
'Dimension' => 'Dimensjoner',
'Size' => 'Størrelse',
'Date' => 'Dato',
'Filename' => 'Filnavn',
'Operations' => 'Handlinger',
'Date_type' => 'd.m.y',
'OK' => 'OK',
'Cancel' => 'Avbryt',
'Sorting' => 'Sortering',
'Show_url' => 'Vis URL',
'Extract' => 'Pakk ut her',
'File_info' => 'Fil-info',
'Edit_image' => 'Rediger bilde',
'Duplicate' => 'Duplikat',
'Folders' => 'Mapper',
'Copy' => 'Kopier',
'Cut' => 'Klipp ut',
'Paste' => 'Lim inn',
'CB' => 'Utklippstavle', // clipboard
'Paste_Here' => 'Lim inn i denne mappen',
'Paste_Confirm' => 'Er du sikker på at du vil lime inn i denne mappen? Dette vil overskrive eventuelle eksisterende filer eller mapper.',
'Paste_Failed' => 'Lim inn feilet',
'Clear_Clipboard' => 'Tøm utklippstavlen',
'Clear_Clipboard_Confirm' => 'Er du sikker på at du vil tømme utklippstavlen?',
'Files_ON_Clipboard' => 'Der er filer på utklippstavlen.',
'Copy_Cut_Size_Limit' => 'De valgte filene/mappene er for store for %s. Grense: %d MB/operasjon', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'Du valgte for mange filer/mapper for %s. Grense: %d filer/operasjon', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'Du har ikke lov til å %s filer.', // %s(1) = cut or copy, %s(2) = files or folders
'Aviary_No_Save' => 'Kunne ikke lagre bildet',
'Zip_No_Extract' => 'Kunne ikke pakke ut. Filen er muligens ødelagt.',
'Zip_Invalid' => 'Dette filetternavnet er ikke støttet. Gyldige filer: zip, gz, tar.',
'Dir_No_Write' => 'Mappen du valgte er ikke skrivbar.',
'Function_Disabled' => 'Funksjonen %s er blitt deaktivert av serveren.', // %s = cut or copy
'File_Permission' => 'Filrettigheter',
'File_Permission_Not_Allowed' => 'Forandring av %s rettigheter er ikke tillatt.', // %s = files or folders
'File_Permission_Recursive' => 'Utfør rekursivt?',
'File_Permission_Wrong_Mode' => "Filrettigheten er feil.",
'User' => 'Bruker',
'Group' => 'Gruppe',
'Yes' => 'Ja',
'No' => 'Nei',
'Lang_Not_Found' => 'Kunne ikke finne språk.',
'Lang_Change' => 'Forandre språk',
'File_Not_Found' => 'Fant ikke filen.',
'File_Open_Edit_Not_Allowed' => 'Du har ikke tillatelse til å %s denne filen.', // %s = open or edit
'Edit' => 'Rediger',
'Edit_File' => "Rediger filens innhold",
'File_Save_OK' => "Filen ble lagret.",
'File_Save_Error' => "Det oppstod en feil når filen ble lagret.",
'New_File' => 'Ny fil',
'No_Extension' => 'Du må legge til et fil-etternavn.',
'Valid_Extensions' => 'Gyldige fil-etternavn: %s', // %s = txt,log etc.
'Upload_message' => "Drop file here to upload",
'SERVER ERROR' => "SERVER ERROR",
'forbiden' => "Forbiden",
'wrong path' => "Wrong path",
'wrong name' => "Wrong name",
'wrong extension' => "Wrong extension",
'wrong option' => "Wrong option",
'wrong data' => "Wrong data",
'wrong action' => "Wrong action",
'wrong sub-action' => "Wrong sub-actio",
'no action passed' => "No action passed",
'no path' => "No path",
'no file' => "No file",
'view type number missing' => "View type number missing",
'Not enough Memory' => "Not enough Memory",
'max_size_reached' => "Your image folder has reach its maximale size of %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Total size",
);

View File

@ -1,145 +0,0 @@
<?php
return array(
'Select' => 'Selecteren',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => 'Verwijderen',
'Open' => 'Openen',
'Confirm_del' => 'Weet u zeker dat u dit bestand wilt verwijderen?',
'All' => 'Alles Weergeven',
'Files' => 'Bestanden',
'Images' => 'Afbeeldingen',
'Archives' => 'Archieven',
'Error_Upload' => 'Het bestand overschrijdt de maximum toegestane grootte.',
'Error_extension' => 'Bestand extensie is niet toegestaan',
'Upload_file' => 'Bestand uploaden',
'Filters' => 'Filter',
'Videos' => 'Videos',
'Music' => 'Muziek',
'New_File' => 'Nieuw bestand',
'New_Folder' => 'Nieuwe map',
'Folder_Created' => 'Map aangemaakt',
'Existing_Folder' => 'Bestaande map',
'Confirm_Folder_del' => 'Weet u zeker dat u deze map en alle bestanden hierin wilt verwijderen?',
'Return_Files_List' => 'Terug naar bestanden',
'Preview' => 'Voorbeeld',
'Download' => 'Download',
'Insert_Folder_Name' => 'Map naam:',
'Root' => 'root',
'Rename' => 'Hernoemen',
'Back' => 'Terug',
'View' => 'Weergave',
'View_list' => 'Lijst weergave',
'View_columns_list' => 'Kolom-lijst weergave',
'View_boxes' => 'Tegel weergave',
'Toolbar' => 'Werkbalk',
'Actions' => 'Acties',
'Rename_existing_file' => 'Het bestand bestaat al',
'Rename_existing_folder' => 'De map bestaat al',
'Empty_name' => 'De bestandsnaam is leeg',
'Text_filter' => 'Zoeken...',
'Swipe_help' => 'Swipe over de naam van een bestand of map om opties te zien',
'Upload_base' => 'Standaard uploader',
'Upload_base_help' => "Drag & Drop bestanden (moderne browsers) of klik op de bovenste knop om het bestand (en) toe te voegen en klik op Begin uploaden. Wanneer het uploaden is voltooid, klikt u op de knop 'Terug naar bestanden'.",
'Upload_add_files' => 'Voeg bestanden toe',
'Upload_start' => 'Begin uploaden',
'Upload_error_messages' =>array(
1 => 'Bestandsgrootte is te groot.',
2 => 'Bestandsgrootte is te groot.',
3 => 'Bestand is slechts gedeeltelijk geupload.',
4 => 'Het bestand is niet uploaded.',
6 => 'Er ontbreekt een folder.',
7 => 'Kan bestand niet wegschrijven.',
8 => 'Een extentie heeft het uploaden gestopt.',
'post_max_size' => 'Bestandsgrootte is te groot.',
'max_file_size' => 'Bestandsgrootte is te groot.',
'min_file_size' => 'Bestandsgrootte is te klein.',
'accept_file_types' => 'Bestandstype niet ondersteund.',
'max_number_of_files' => 'Maximum aantal bestanden bereikt.',
'max_width' => 'Afbeelding te breed.',
'min_width' => 'Afbeelding niet breed genoeg.',
'max_height' => 'Afbeelding te hoog.',
'min_height' => 'Afbeelding niet hoog genoeg.',
'abort' => 'Uploaden onderbroken.',
'image_resize' => 'Resizen is mislukt.'
),
'Upload_url' => 'Van url',
'Type_dir' => 'map',
'Type' => 'Type',
'Dimension' => 'Afmetingen',
'Size' => 'Grootte',
'Date' => 'Datum',
'Filename' => 'Naam',
'Operations' => 'Bewerkingen',
'Date_type' => 'd-m-y',
'OK' => 'OK',
'Cancel' => 'Annuleren',
'Sorting' => 'Sorteren op',
'Show_url' => 'Toon URL',
'Extract' => 'Hier uitpakken',
'File_info' => 'Bestands-info',
'Edit_image' => 'Afbeelding bewerken',
'Duplicate' => 'Dupliceren',
'Folders' => 'Folders',
'Copy' => 'Kopiëren',
'Cut' => 'Knippen',
'Paste' => 'Plakken',
'CB' => 'Klembord', // clipboard
'Paste_Here' => 'Hier plakken',
'Paste_Confirm' => 'Weet u zeker dat u in deze map wilt plakken? Dit overschrijft mappen/bestanden met dezelfde naam indien deze voorkomen.',
'Paste_Failed' => 'Niet gelukt de bestanden te plakken',
'Clear_Clipboard' => 'Wis klembord',
'Clear_Clipboard_Confirm' => 'Weet u zeker dat u het klembord wilt wissen?',
'Files_ON_Clipboard' => 'Er staan bestanden op het klembord.',
'Copy_Cut_Size_Limit' => 'De geselecteerde mappen/bestanden zijn te groot om te %s. Maximaal: %d MB/operation', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'er zijn teveel mappen/bestanden geselecteerd om te %s. Maximaal: %d files/operation', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'Het is niet toegestaan bestanden te %s.', // %s(1) = cut or copy, %s(2) = files or folders
'Aviary_No_Save' => 'Kan de afbeelding niet opslaan',
'Zip_No_Extract' => 'Kan niet uitpakken. Bestand is wellicht beschadigt.',
'Zip_Invalid' => 'Deze extensie is niet toegestaan. Valid: zip, gz, tar.',
'Dir_No_Write' => 'De geselecteerde map is niet beschrijfbaar.',
'Function_Disabled' => 'De functie %s is uitgeschakeld door de server.', // %s = cut or copy
'File_Permission' => 'Rechten',
'File_Permission_Not_Allowed' => 'Aanpassen van de rechten van %s is niet toegestaan.', // %s = files or folders
'File_Permission_Recursive' => 'Toepassen voor alles binnen deze map?',
'File_Permission_Wrong_Mode' => "De gewenste rechten zijn niet juist.",
'User' => 'Gebruiker',
'Group' => 'Groep',
'Yes' => 'Ja',
'No' => 'Nee',
'Lang_Not_Found' => 'Kan de taal niet vinden.',
'Lang_Change' => 'Verander de taal',
'File_Not_Found' => 'Kan het bestand niet vinden.',
'File_Open_Edit_Not_Allowed' => 'Je bent niet bevoegd dit bestand te %s.', // %s = open or edit
'Edit' => 'Bewerken',
'Edit_File' => "Bewerkt de inhoud van dit bestand",
'File_Save_OK' => "Bestand is opgeslagen.",
'File_Save_Error' => "Er is een fout opgetreden tijdens het opslaan van het bestand.",
'No_Extension' => 'Je moet een bestands-extensie toevoegen.',
'Valid_Extensions' => 'Geldige extensies: %s', // %s = txt,log etc.
'Upload_message' => "Sleep hier bestanden om te uploaden",
'SERVER ERROR' => "SERVER ERROR",
'forbiden' => "Forbiden",
'wrong path' => "Wrong path",
'wrong name' => "Wrong name",
'wrong extension' => "Wrong extension",
'wrong option' => "Wrong option",
'wrong data' => "Wrong data",
'wrong action' => "Wrong action",
'wrong sub-action' => "Wrong sub-actio",
'no action passed' => "No action passed",
'no path' => "No path",
'no file' => "No file",
'view type number missing' => "View type number missing",
'Not enough Memory' => "Not enough Memory",
'max_size_reached' => "Your image folder has reach its maximale size of %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Total size",
);

View File

@ -1,145 +0,0 @@
<?php
return array(
'Select' => 'Vel',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => 'Slett',
'Open' => 'Opne',
'Confirm_del' => 'Er du sikker på at du vil slette denne fila?',
'All' => 'Alle',
'Files' => 'Filer',
'Images' => 'Bilete',
'Archives' => 'Arkiv',
'Error_Upload' => 'Den opplasta fila over over maksimal tillaten storleik.',
'Error_extension' => 'Denne filtypen er ikkje lov.',
'Upload_file' => 'Last opp fil',
'Filters' => 'Filter',
'Videos' => 'Videoar',
'Music' => 'Musikk',
'New_Folder' => 'Ny mappe',
'Folder_Created' => 'Mappe oppretta',
'Existing_Folder' => 'Eksisterande mappe',
'Confirm_Folder_del' => 'Er du sikker på at du vil slette mappa og alt innhaldet?',
'Return_Files_List' => 'Tilbake til filoversikta',
'Preview' => 'Førehandsvising',
'Download' => 'Last ned',
'Insert_Folder_Name' => 'Gi mappa eit namn:',
'Root' => 'Rot',
'Rename' => 'Gi nytt namn',
'Back' => 'Tilbake',
'View' => 'Vising',
'View_list' => 'Listevising',
'View_columns_list' => 'Side ved side',
'View_boxes' => 'Boksvising',
'Toolbar' => 'Verktøylinje',
'Actions' => 'Gjeremål',
'Rename_existing_file' => 'Fila er oppretta frå før',
'Rename_existing_folder' => 'Mappa er oppretta frå før',
'Empty_name' => 'Tomt namn',
'Text_filter' => 'Tekst-filter',
'Swipe_help' => 'Sveip filnamnet/mappenamnet for å sjå alternativ',
'Upload_base' => 'Vanleg opplasting',
'Upload_base_help' => "Dra og slepp filer (moderne nettlesarar) eller klikk på knappen «Legg til fil(er)» øvst og deretter på «Start opplasting». Når opplastinga er ferdig, klikk knappen «Tilbake til filoversikta».",
'Upload_add_files' => 'Legg til fil(er)',
'Upload_start' => 'Start opplasting',
'Upload_error_messages' =>array(
1 => 'Fila enn større enn grensa upload_max_filesize i php.ini',
2 => 'Fila er større enn direktivet MAX_FILE_SIZE i HTML-skjemaet',
3 => 'Fila vart berre delvis opplasta',
4 => 'Inga fil vart opplasta',
6 => 'Manglar mappe for mellombels lagring',
7 => 'Fekk ikkje til å skrive fila til disken',
8 => 'Ei PHP-utviding stansa filopplastinga',
'post_max_size' => 'Fila enn større enn det som er sett som post_max_size i php.ini',
'max_file_size' => 'File er for stor',
'min_file_size' => 'File er for lita',
'accept_file_types' => 'Filetypen er ikkje lov',
'max_number_of_files' => 'Så mange filer er ikkje lov',
'max_width' => 'Biletet er for breitt',
'min_width' => 'Biletet er ikkje breitt nok',
'max_height' => 'Biletet er for høgt',
'min_height' => 'Biletet er ikkje høgt nok',
'abort' => 'Filopplasting avbroten',
'image_resize' => 'Kunne ikkje endre storleik på biletet'
),
'Upload_url' => 'URL for opplasting',
'Type_dir' => 'Mappe',
'Type' => 'Type',
'Dimension' => 'Dimensjonar',
'Size' => 'Storleik',
'Date' => 'Dato',
'Filename' => 'Filnamn',
'Operations' => 'Handlingar',
'Date_type' => 'd.m.y',
'OK' => 'OK',
'Cancel' => 'Avbryt',
'Sorting' => 'Sortering',
'Show_url' => 'Vis URL',
'Extract' => 'Pakk ut her',
'File_info' => 'Fil-info',
'Edit_image' => 'Rediger bilete',
'Duplicate' => 'Duplikat',
'Folders' => 'Mapper',
'Copy' => 'Kopier',
'Cut' => 'Klipp ut',
'Paste' => 'Lim inn',
'CB' => 'Utklippstavle', // clipboard
'Paste_Here' => 'Lim inn i denne mappa',
'Paste_Confirm' => 'Er du sikker på at du vil lime inn i denne mappa? Dette vil overskrive eventuelle eksisterande filer eller mapper.',
'Paste_Failed' => 'Innnliming feila',
'Clear_Clipboard' => 'Tøm utklippstavla',
'Clear_Clipboard_Confirm' => 'Er du sikker på at du vil tømme utklippstavla?',
'Files_ON_Clipboard' => 'Det er filer på utklippstavla.',
'Copy_Cut_Size_Limit' => 'Dei valde filene/mappene er for store for %s. Grense: %d MB/operasjon', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'Du valde for mange filer/mapper for %s. Grense: %d filer/operasjon', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'Du har ikkje lov til å %s filer.', // %s(1) = cut or copy, %s(2) = files or folders
'Aviary_No_Save' => 'Kunne ikkje lagre biletet',
'Zip_No_Extract' => 'Kunne ikkje pakke ut. Fila kan vere skada.',
'Zip_Invalid' => 'Dette filetternamnet er ikkje støtta. Gyldige filer: zip, gz, tar.',
'Dir_No_Write' => 'Mappa du valde kan ikkje skrivast til.',
'Function_Disabled' => 'Funksjonen %s er deaktivert av serveren.', // %s = cut or copy
'File_Permission' => 'Filløyve',
'File_Permission_Not_Allowed' => 'Endring av %s løyve er ikkje lov.', // %s = files or folders
'File_Permission_Recursive' => 'Utfør rekursivt?',
'File_Permission_Wrong_Mode' => "Filløyvet er feil.",
'User' => 'Brukar',
'Group' => 'Gruppe',
'Yes' => 'Ja',
'No' => 'Nei',
'Lang_Not_Found' => 'Kunne ikkje finne språk.',
'Lang_Change' => 'Endre språk',
'File_Not_Found' => 'Fann ikkje fila.',
'File_Open_Edit_Not_Allowed' => 'Du har ikkje lov til å %s denne fila.', // %s = open or edit
'Edit' => 'Rediger',
'Edit_File' => "Rediger filinnhaldet",
'File_Save_OK' => "Fila vart lagra.",
'File_Save_Error' => "Det oppstod ein feil ved lagring av fila.",
'New_File' => 'Ny fil',
'No_Extension' => 'Du må legge til eit fil-etternamn.',
'Valid_Extensions' => 'Gyldige fil-etternamn: %s', // %s = txt,log etc.
'Upload_message' => "Slepp fila her for å laste opp",
'SERVER ERROR' => "SERVERFEIL",
'forbiden' => "Ikkje lov",
'wrong path' => "Feil bane",
'wrong name' => "Feil namn",
'wrong extension' => "Feil utviding",
'wrong option' => "Feil val",
'wrong data' => "Feil data",
'wrong action' => "Feil handling",
'wrong sub-action' => "Feil underhandling",
'no action passed' => "Inga handling sendt",
'no path' => "Ingen bane",
'no file' => "Inga fil",
'view type number missing' => "Manglar typenummer for vising",
'Not enough Memory' => "Ikkje nok minne",
'max_size_reached' => "Biletmappa di har nådd sin maksimale storleik %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Total storleik",
);

View File

@ -1,145 +0,0 @@
<?php
return array(
'Select' => 'Wybierz',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => 'Usuń',
'Open' => 'Otwórz',
'Confirm_del' => 'Czy jesteś pewien, że chcesz usunąć ten plik?',
'All' => 'Wszystkie',
'Files' => 'Pliki',
'Images' => 'Zdjęcia',
'Archives' => 'Archiwa',
'Error_Upload' => 'Plik przekracza maksymalny dozwolony rozmiar.',
'Error_extension' => 'Niedozwolone rozszerzenie pliku.',
'Upload_file' => 'Wgraj plik',
'Filters' => 'Filtr widoku',
'Videos' => 'Filmy',
'Music' => 'Muzyka',
'New_Folder' => 'Nowy folder',
'Folder_Created' => 'Folder został utworzony poprawnie',
'Existing_Folder' => 'Istniejący folder',
'Confirm_Folder_del' => 'Czy jesteś pewien, że chcesz usunąć folder i wszystko co znajduje się w nim?',
'Return_Files_List' => 'Powrót do listy plików',
'Preview' => 'Podgląd',
'Download' => 'Pobierz',
'Insert_Folder_Name' => 'Podaj nazwę folderu:',
'Root' => 'root',
'Rename' => 'Zmień nazwę',
'Back' => '[..]',
'View' => 'Widok',
'View_list' => 'Lista',
'View_columns_list' => 'Kolumnowy',
'View_boxes' => 'Blokowy',
'Toolbar' => 'Pasek',
'Actions' => 'Opcje',
'Rename_existing_file' => 'Ten plik już tutaj umieszczono',
'Rename_existing_folder' => 'Ten folder już tutaj utworzono',
'Empty_name' => 'Nie podano wymaganej nazwy',
'Text_filter' => 'wpisz txt',
'Swipe_help' => 'Kliknij w nazwę pliku/folderu by wyświetlić dostępne opcje',
'Upload_base' => 'Wgrywanie standardowe',
'Upload_base_help' => "Drag & Drop files(modern browsers) or click in upper button to Add the file(s) and click on Start upload. When the upload is complete, click the 'Return to files list' button.",
'Upload_add_files' => 'Add file(s)',
'Upload_start' => 'Start upload',
'Upload_error_messages' =>array(
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
3 => 'The uploaded file was only partially uploaded',
4 => 'No file was uploaded',
6 => 'Missing a temporary folder',
7 => 'Failed to write file to disk',
8 => 'A PHP extension stopped the file upload',
'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini',
'max_file_size' => 'File is too big',
'min_file_size' => 'File is too small',
'accept_file_types' => 'Filetype not allowed',
'max_number_of_files' => 'Maximum number of files exceeded',
'max_width' => 'Image exceeds maximum width',
'min_width' => 'Image requires a minimum width',
'max_height' => 'Image exceeds maximum height',
'min_height' => 'Image requires a minimum height',
'abort' => 'File upload aborted',
'image_resize' => 'Failed to resize image'
),
'Upload_url' => 'From url',
'Type_dir' => 'FLD',
'Type' => 'Roz.',
'Dimension' => 'Rozmiar',
'Size' => 'Wlk.',
'Date' => ' Czas',
'Filename' => 'Nazwa',
'Operations' => 'Opcje',
'Date_type' => 'd-m-y',
'OK' => 'OK',
'Cancel' => 'Anuluj',
'Sorting' => 'Sortowanie',
'Show_url' => 'pokaż URL',
'Extract' => 'rozpakuj tutaj',
'File_info' => 'info o pliku',
'Edit_image' => 'edycja obrazu',
'Duplicate' => 'Powiel',
'Folders' => 'Foldery',
'Copy' => 'Kopiuj',
'Cut' => 'Wytnij',
'Paste' => 'Wklej',
'CB' => 'Schowek', // clipboard
'Paste_Here' => 'Wklej do tego folderu',
'Paste_Confirm' => 'Czy jesteś pewien, że chcesz wkleić to do tego folderu? Operacja nadpisze istniejące już wczesniej pliki/podfoldery bez możliwości ich odzyskania.',
'Paste_Failed' => 'Operacja wklejenia plików nie powiodła się',
'Clear_Clipboard' => 'Wyczyść schowek',
'Clear_Clipboard_Confirm' => 'Czy jesteś pewien, że chcesz wyczyścić zasoby schowka?',
'Files_ON_Clipboard' => 'Do schowka zostały dodane pliki.',
'Copy_Cut_Size_Limit' => 'Wybrane pliki/foldery mają zbyt duży rozmiar by wykonać operację %s. Obowiązuje ograniczenie do: %d MB/etap operacji', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'Wybrałeś zbyt wiele plików/folderów by wykonać operację %s. Limit: %d plików/etap operacji', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'Nie masz uprawnień do wykonania działania %s na tych plikach.', // %s(1) = cut or copy, %s(2) = files or folders
'Aviary_No_Save' => 'Nie można zapisać obrazka',
'Zip_No_Extract' => 'Archiwum ZIP nie może zostać rozpakowane tam. Plik może być uszkodzony.',
'Zip_Invalid' => 'Te rozszerzenia plików nie posiadają tutaj naszego wspierane. Dopuszczamy tylko format: zip, gz, tar.',
'Dir_No_Write' => 'Folder który wybrałeś, nie posiada uprawnień chmod umożliwiających poprawny zapis.',
'Function_Disabled' => 'Operacja %s została zablokowana przez oprogramowanie Twojego serwera.', // %s = cut or copy
'File_Permission' => 'Uprawnienia pliku',
'File_Permission_Not_Allowed' => 'Zmiana uprawnień dla %s jest niedozwolona.', // %s = files or folders
'File_Permission_Recursive' => 'Zastosować rekursywnie?',
'File_Permission_Wrong_Mode' => "Zastosowane uprawnienia są niepoprawne.",
'User' => 'Użytkownik',
'Group' => 'Grupa',
'Yes' => 'Tak',
'No' => 'Nie',
'Lang_Not_Found' => 'Nie znaleziono języka.',
'Lang_Change' => 'Zmień język',
'File_Not_Found' => 'Nie można znaleźć pliku.',
'File_Open_Edit_Not_Allowed' => 'Nie masz uprawnien do pliku %s.', // %s = open or edit
'Edit' => 'Edytuj',
'Edit_File' => "Edytuj zawartość pliku",
'File_Save_OK' => "Plik został zapisany.",
'File_Save_Error' => "Wystąpił błąd podczas zapisywania pliku.",
'New_File' => 'Utwórz plik',
'No_Extension' => 'Musisz dodać rozszerzenie do pliku.',
'Valid_Extensions' => 'Poprawne rozszerzenia: %s', // %s = txt,log etc.
'Upload_message' => "Upuść plik aby go przesłać",
'SERVER ERROR' => "Błąd serwera",
'forbiden' => "Brak dostępu",
'wrong path' => "Nieprawidłowa ścieżka",
'wrong name' => "Nieprawidłowa nazwa",
'wrong extension' => "Nieprawidłowe rozszerzenie pliku",
'wrong option' => "Nieprawidłowa opcja",
'wrong data' => "Nieprawidłowe dane",
'wrong action' => "Nieprawidłowa akcja",
'wrong sub-action' => "Nieprawidłowa pod-akcja",
'no action passed' => "Nie określono akcji",
'no path' => "Brak ścieżki",
'no file' => "Brak pliku",
'view type number missing' => "Brak numeru typu widoku",
'Not enough Memory' => "Zbyt mało pamięci",
'max_size_reached' => "Twój katalog z obrazkami osiągnął maksymalny rozmiar: %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Całkowity rozmiar",
);

View File

@ -1,145 +0,0 @@
<?php
return array(
'Select' => 'Selecionar',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => 'Apagar',
'Open' => 'Abrir',
'Confirm_del' => 'Tem certeza que quer deletar este arquivo?',
'All' => 'Todos',
'Files' => 'Arquivos',
'Images' => 'Imagens',
'Archives' => 'Compactados',
'Error_Upload' => 'O arquivo enviado é maior que o limite permitido.',
'Error_extension' => 'Extensão não permitida.',
'Upload_file' => 'Enviar um arquivo',
'Filters' => 'Filtro',
'Videos' => 'Vídeos',
'Music' => 'Musica',
'New_Folder' => 'Nova pasta',
'Folder_Created' => 'Pasta criada corretamente',
'Existing_Folder' => 'Pasta existente',
'Confirm_Folder_del' => 'Tem certeza que você quer deletar a pasta e todo o seu conteúdo?',
'Return_Files_List' => 'Voltar à lista de arquivos',
'Preview' => 'Prévia',
'Download' => 'Baixar',
'Insert_Folder_Name' => 'Insira o nome da pasta:',
'Root' => 'root',
'Rename' => 'Mudar o nome',
'Back' => 'de volta',
'View' => 'Modo de Visualização',
'View_list' => 'Lista',
'View_columns_list' => 'Lista de Colunas',
'View_boxes' => 'Box',
'Toolbar' => 'Toolbar',
'Actions' => 'Ações',
'Rename_existing_file' => 'O arquivo já existe!',
'Rename_existing_folder' => 'A pasta já existe!',
'Empty_name' => 'O nome está vazio!',
'Text_filter' => 'Filtrar',
'Swipe_help' => 'Passe o nome do arquivo/pasta para ver as opções',
'Upload_base' => 'Base upload',
'Upload_base_help' => "Drag & Drop files(modern browsers) or click in upper button to Add the file(s) and click on Start upload. When the upload is complete, click the 'Return to files list' button.",
'Upload_add_files' => 'Add file(s)',
'Upload_start' => 'Start upload',
'Upload_error_messages' =>array(
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
3 => 'The uploaded file was only partially uploaded',
4 => 'No file was uploaded',
6 => 'Missing a temporary folder',
7 => 'Failed to write file to disk',
8 => 'A PHP extension stopped the file upload',
'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini',
'max_file_size' => 'File is too big',
'min_file_size' => 'File is too small',
'accept_file_types' => 'Filetype not allowed',
'max_number_of_files' => 'Maximum number of files exceeded',
'max_width' => 'Image exceeds maximum width',
'min_width' => 'Image requires a minimum width',
'max_height' => 'Image exceeds maximum height',
'min_height' => 'Image requires a minimum height',
'abort' => 'File upload aborted',
'image_resize' => 'Failed to resize image'
),
'Upload_url' => 'From url',
'Type_dir' => 'dir',
'Type' => 'Tipo',
'Dimension' => 'Dimensão',
'Size' => 'Tamanho',
'Date' => 'Data',
'Filename' => 'Nome',
'Operations' => 'Operações',
'Date_type' => 'd/m/Y',
'OK' => 'OK',
'Cancel' => 'Cancelar',
'Sorting' => 'Ordenar',
'Show_url' => 'Mostrar URL',
'Extract' => 'Extrair aqui',
'File_info' => 'Informação do Arquivo',
'Edit_image' => 'Editar a imagem',
'Duplicate' => 'Duplicar',
'Folders' => 'Pastas',
'Copy' => 'Copiar',
'Cut' => 'Recortar',
'Paste' => 'Colar',
'CB' => 'Área de Transferência', // clipboard
'Paste_Here' => 'Copiar para este diretório',
'Paste_Confirm' => 'Você tem certeza quer copiar para este diretório? Isso sobrescreverá pastas/arquivos existentes se encontrar alguma coisa.',
'Paste_Failed' => 'Não foi possível colar o(s) arquivo(s)',
'Clear_Clipboard' => 'Limpar área de transferência',
'Clear_Clipboard_Confirm' => 'Tem certeza de que deseja limpar a área de transferência?',
'Files_ON_Clipboard' => 'Há arquivos na área de transferência.',
'Copy_Cut_Size_Limit' => 'Os arquivos/pastas selecionados são grandes demais para %s. Limite: %d MB/operação', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'Você selecionou muitos arquivos/pastas para %s. Limite: %d arquivos/operação', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'Você não tem permissão para %s arquivos.', // %s(1) = cut or copy, %s(2) = files or folders
'Aviary_No_Save' => 'Não foi possível salvar a imagem',
'Zip_No_Extract' => 'Não foi possível extrair. Arquivo pode estar corrompido.',
'Zip_Invalid' => 'Esta extensão não é suportada. Válidos: zip, gz, tar.',
'Dir_No_Write' => 'O diretório selecionado não é gravável.',
'Function_Disabled' => 'A função %s foi desativado pelo servidor.', // %s = cut or copy
'File_Permission' => 'Permissão arquivo',
'File_Permission_Not_Allowed' => 'Mudanças de permissões de %s não são permitidos.', // %s = files or folders
'File_Permission_Recursive' => 'Aplicar recursivamente?',
'File_Permission_Wrong_Mode' => "O modo de permissão fornecido está incorreto.",
'User' => 'Usuário',
'Group' => 'Grupo',
'Yes' => 'Sim',
'No' => 'Não',
'Lang_Not_Found' => 'Não foi possível encontrar uma linguagem.',
'Lang_Change' => 'Alterar o idioma',
'File_Not_Found' => 'Não foi possível encontrar o arquivo.',
'File_Open_Edit_Not_Allowed' => 'Você não tem permissão para %s este arquivo.', // %s = open or edit
'Edit' => 'Editar',
'Edit_File' => "Editar conteúdo do arquivo",
'File_Save_OK' => "Arquivo salvo com sucesso.",
'File_Save_Error' => "Houve um erro ao salvar o arquivo.",
'New_File' => 'Novo Arquivo',
'No_Extension' => 'Você tem que adicionar uma extensão de arquivo.',
'Valid_Extensions' => 'Extensões válidas: %s', // %s = txt,log etc.
'Upload_message' => "Arraste arquivo aqui para enviar",
'SERVER ERROR' => "ERRO SERVIDOR",
'forbiden' => "proibido",
'wrong path' => "caminho errado",
'wrong name' => "nome errado",
'wrong extension' => "extensão errada",
'wrong option' => "opção errada",
'wrong data' => "dados errados",
'wrong action' => "ação errada",
'wrong sub-action' => "sub-ação errada",
'no action passed' => "nenhuma ação passada",
'no path' => "nenhum caminho",
'no file' => "nenhum arquivo",
'view type number missing' => "Ver tipo de número faltando",
'Not enough Memory' => "Memória insuficiente",
'max_size_reached' => "Sua pasta de imagens atingiu seu tamanho máximo de %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Tamanho total",
);

View File

@ -1,145 +0,0 @@
<?php
return array(
'Select' => 'Selectează',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => 'Șterge',
'Open' => 'Deschide',
'Confirm_del' => 'Sunteți sigur(ă) că vreți să ștergeți acest fișier?',
'All' => 'Toate',
'Files' => 'Fișiere',
'Images' => 'Imagini',
'Archives' => 'Arhive',
'Error_Upload' => 'Fișierul încărcat depășește dimensiunea maximă admisă.',
'Error_extension' => 'Fișierele cu această extensie nu sunt permise',
'Upload_file' => 'Upload', // Încarcă - this is the correct translation for "Upload" but in Romania, we are more familiar to the english term
'Filters' => 'Filtre',
'Videos' => 'Fișiere video',
'Music' => 'Fișiere audio',
'New_Folder' => 'Folder nou',
'Folder_Created' => 'Folderul a fost creat cu succes',
'Existing_Folder' => 'Folder existent',
'Confirm_Folder_del' => 'Sunteți sigur(ă) că vreți să ștergeți acest folder și toate fișierele din el?',
'Return_Files_List' => 'Înapoi la lista de fișiere',
'Preview' => 'Previzualizare',
'Download' => 'Descărcare',
'Insert_Folder_Name' => 'Adaugă denumire la folder:',
'Root' => 'folder rădăcină',
'Rename' => 'Redenumire',
'Back' => 'înapoi',
'View' => 'Vizualizare',
'View_list' => 'Vizualizare listă',
'View_columns_list' => 'Vizualizare coloane',
'View_boxes' => 'Vizualizare pictograme',
'Toolbar' => 'Bară de unelte',
'Actions' => 'Acțiuni',
'Rename_existing_file' => 'Deja există un fișier cu această denumire',
'Rename_existing_folder' => 'Deja există un folder cu această denumire',
'Empty_name' => 'Denumirea nu este completată',
'Text_filter' => 'filtru text',
'Swipe_help' => 'Glisează pe numele fișierului/folderului pentru opțiuni',
'Upload_base' => 'Upload standard',
'Upload_base_help' => "Adaugă fișiere (drag & drop - browsere moderne) sau click pe butonul Adaugă fișier(e), de mai sus apoi pe butonul Start upload. După ce upload-ul este finalizat, apăsați pe butonul Înapoi la lista de fișiere.",
'Upload_add_files' => 'Adaugă fișier(e)',
'Upload_start' => 'Start upload',
'Upload_error_messages' =>array(
1 => 'Dimensiunea fișierului uploadat depășește valoarea din directiva upload_max_filesize din fișierul php.ini',
2 => 'Dimensiunea fișierului uploadat depășește valoarea din directiva MAX_FILE_SIZE specificată în formularul HTML',
3 => 'Fișierul uploadat a fost încărcat parțial ',
4 => 'Nicun fișier nu a fost uploadat',
6 => 'Folderul temporar lipsește',
7 => 'Scrierea fișierului pe disc a eșuat',
8 => 'O extensie PHP a întrerupt upload-ul',
'post_max_size' => 'Dimensiunea fișierului uploadat depășește valoarea din directiva post_max_size din fișierul php.ini',
'max_file_size' => 'Fișierul este prea mare',
'min_file_size' => 'Fișierul este prea mic',
'accept_file_types' => 'Tipul de fișier nu este permis',
'max_number_of_files' => 'Numărul maxim de fișiere a fost depășit',
'max_width' => 'Rezoluția imaginii depășește lățimea maximă admisă',
'min_width' => 'Rezoluția imaginii este mai mică decât lățimea minimă necesară',
'max_height' => 'Rezoluția imaginii depășește înălțimea maximă admisă',
'min_height' => 'Rezoluția imaginii este mai mică decât înălțimea minimă necesară',
'abort' => 'Procesul de upload a fost întrerupt',
'image_resize' => 'Imaginea nu a putut fi redimensionată'
),
'Upload_url' => 'Din url',
'Type_dir' => 'dir',
'Type' => 'Tip',
'Dimension' => 'Dimensiune',
'Size' => 'Mărime',
'Date' => 'Data',
'Filename' => 'Nume fișier',
'Operations' => 'Operații',
'Date_type' => 'y-m-d',
'OK' => 'OK',
'Cancel' => 'Anulare',
'Sorting' => 'sortare',
'Show_url' => 'Afisează URL',
'Extract' => 'Extrage aici',
'File_info' => 'informații fișier',
'Edit_image' => 'Editare imagine',
'Duplicate' => 'Multiplicare',
'Folders' => 'Foldere',
'Copy' => 'Copiere',
'Cut' => 'Tăiere',
'Paste' => 'Lipire',
'CB' => 'Clipboard', // clipboard
'Paste_Here' => 'Lipire în acest folder',
'Paste_Confirm' => 'Sunteți sigur(ă) că doriți să copiați fișierul în acest folder? Această operațiune va suprascrie folderele sau fișierele cu aceiași denumire.',
'Paste_Failed' => 'Operațiunea de lipire a fișierelor a eșuat',
'Clear_Clipboard' => 'Șterge clipboard',
'Clear_Clipboard_Confirm' => 'Sunteți sigur(ă) că doriți să ștergeți conținutul clipboard-ului?',
'Files_ON_Clipboard' => 'Există fișiere în clipboard.',
'Copy_Cut_Size_Limit' => 'Folderele/fișierele selectate sunt prea mari pentru a %1$s. Limita maximă: %2$d MB/operațiune', // %1$s = cut or copy, %2$d = max size
'Copy_Cut_Count_Limit' => 'Ați selectat prea multe foldere/fișiere pentru a %1$s. Limita maximă: %2$d files/operațiune', // %1$s = cut or copy, %2$d = max count
'Copy_Cut_Not_Allowed' => 'Nu aveți permisiuni pentru a %1$s %2$s.', // %12$s = cut or copy, %2$s = files or folders
'Aviary_No_Save' => 'Imaginea nu poate fi salvată',
'Zip_No_Extract' => 'Fisierele din arhivă nu pot fi extrase. Este posibil ca arhiva să fie coruptă.',
'Zip_Invalid' => 'Extensia nu este suportată. Extensii valide: zip, gz, tar.',
'Dir_No_Write' => 'Folderul selectat nu are permisiuni de scriere.',
'Function_Disabled' => 'Funcția %s a fost dezactivată din server.', // %s = cut or copy
'File_Permission' => 'Permisiuni fișier',
'File_Permission_Not_Allowed' => 'Modificare permisiunilor pentru %s nu este permisă.', // %s = files or folders
'File_Permission_Recursive' => 'Execută în mod recursiv?',
'File_Permission_Wrong_Mode' => "Permisiunea furnizată nu este permisă.",
'User' => 'Utilizator',
'Group' => 'Grup',
'Yes' => 'Da',
'No' => 'Nu',
'Lang_Not_Found' => 'Limba aleasă, nu poate fi găsită.',
'Lang_Change' => 'Modificare limba',
'File_Not_Found' => 'Fisierul nu poate fi găsit.',
'File_Open_Edit_Not_Allowed' => 'Nu aveți permisiuni pentru a %s acest fișier.', // %s = open or edit
'Edit' => 'Editare',
'Edit_File' => "Editare conținut fișier",
'File_Save_OK' => "Fișierul a fost salvat cu succes.",
'File_Save_Error' => "A intervenit o eroare la salvarea fișierului.",
'New_File' => 'Fișier nou',
'No_Extension' => 'Este necesar să adăugați o extensie validă la fișier.',
'Valid_Extensions' => 'Extensii valide: %s', // %s = txt,log etc.
'Upload_message' => "Drag & drop la fișiere pentru upload",
'SERVER ERROR' => "EROARE SERVER",
'forbiden' => "Interzis",
'wrong path' => "Cale incorectă",
'wrong name' => "Denumire incorectă",
'wrong extension' => "Extensie incorectă",
'wrong option' => "Opțiune incorectă",
'wrong data' => "Data incorectă",
'wrong action' => "Acțiune incorectă",
'wrong sub-action' => "Subacțiune incorectă",
'no action passed' => "Nicio acțiune nu s-a finalizat",
'no path' => "Cale inexistentă",
'no file' => "Fișier inexistent",
'view type number missing' => "Lipsă număr tip de vizualizare",
'Not enough Memory' => "Memorie insuficientă",
'max_size_reached' => "Folderul de imagini a atins dimensiunea maximă de %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Dimensiune totală",
);

View File

@ -1,144 +0,0 @@
<?php
return array(
'Select' => 'Выбрать',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => 'Удалить',
'Open' => 'Открыть',
'Confirm_del' => 'Вы уверены, что хотите удалить этот файл?',
'All' => 'Очистить фильтр',
'Files' => 'Файлы',
'Images' => 'Изображения',
'Archives' => 'Архивы',
'Error_Upload' => 'Загружаемый файл превышает допустимый размер.',
'Error_extension' => 'Недопустимый формат файла.',
'Upload_file' => 'Загрузить файл',
'Filters' => 'Фильтр',
'Videos' => 'Видео',
'Music' => 'Музыка',
'New_Folder' => 'Новая папка',
'Folder_Created' => 'Папка успешно создана',
'Existing_Folder' => 'Существующая папка',
'Confirm_Folder_del' => 'Вы уверены, что хотите удалить эту папку и все файлы в ней?',
'Return_Files_List' => 'Вернуться к списку файлов',
'Preview' => 'Просмотр',
'Download' => 'Загрузить',
'Insert_Folder_Name' => 'Введите имя папки:',
'Root' => 'Корневая папка',
'Rename' => 'Переименовать',
'Back' => 'Назад',
'View' => 'Вид',
'View_list' => 'Список',
'View_columns_list' => 'Столбцы',
'View_boxes' => 'Плитка',
'Toolbar' => 'Панель',
'Actions' => 'Действия',
'Rename_existing_file' => 'Файл уже существует',
'Rename_existing_folder' => 'Папка уже существует',
'Empty_name' => 'Не заполнено имя',
'Text_filter' => 'фильтр',
'Swipe_help' => 'Наведите на имя файла/папки, чтобы увидеть опции',
'Upload_base' => 'Основная загрузка',
'Upload_base_help' => "Перетащите файлы (современные браузеры) или нажмите на верхнюю кнопку, чтобы добавить файл(ы), и нажмите «Начать загрузку». Когда загрузка будет завершена, нажмите кнопку «Возврат к списку файлов».",
'Upload_add_files' => 'Добавить файл(ы)',
'Upload_start' => 'Начать загрузку',
'Upload_error_messages' =>array(
1 => 'Загруженный файл превышает параметр upload_max_filesize в php.ini',
2 => 'Загруженный файл превышает параметр MAX_FILE_SIZE, указанный в HTML-форме',
3 => 'Файл был загружен только частично',
4 => 'Файл не удалось загрузить',
6 => 'Отсутствует временная папка',
7 => 'Не удалось записать файл на диск',
8 => 'Расширение PHP остановило загрузку файла',
'post_max_size' => 'Загруженный файл превышает параметр post_max_size в php.ini',
'max_file_size' => 'Размер файла слишком большой',
'min_file_size' => 'Размер файла слишком маленький',
'accept_file_types' => 'Недопустимый тип файла',
'max_number_of_files' => 'Превышено максимальное количество файлов',
'max_width' => 'Изображение превышает максимальную ширину',
'min_width' => 'Изображение требует минимальной ширины',
'max_height' => 'Изображение превышает максимальную высоту',
'min_height' => 'Изображение требует минимальной высоты',
'abort' => 'Загрузка файла прервана',
'image_resize' => 'Не удалось изменить размер изображения'
),
'Upload_url' => 'По адресу',
'Type_dir' => 'папка',
'Type' => 'Тип',
'Dimension' => 'Разрешение',
'Size' => 'Размер',
'Date' => 'Дата',
'Filename' => 'Имя&nbsp;файла',
'Operations' => 'Действие',
'Date_type' => 'd-m-Y',
'OK' => 'OK',
'Cancel' => 'Отмена',
'Sorting' => 'Сортировка',
'Show_url' => 'Показать URL',
'Extract' => 'Распаковать здесь',
'File_info' => 'Свойства файла',
'Edit_image' => 'Редактировать',
'Duplicate' => 'Создать копию',
'Folders' => 'Папки',
'Copy' => 'Копировать',
'Cut' => 'Вырезать',
'Paste' => 'Вставить',
'CB' => 'Буфер обмена', // clipboard
'Paste_Here' => 'Вставить в текущую папку',
'Paste_Confirm' => 'Вы хотите вставить в эту папку? При совпадении имён файлы будут перезаписаны',
'Paste_Failed' => 'Не удалось вставить файл(ы).',
'Clear_Clipboard' => 'Очистить буфер обмена',
'Clear_Clipboard_Confirm' => 'Очистить буфер обмена?',
'Files_ON_Clipboard' => 'Есть файлы в буфере обмена.',
'Copy_Cut_Size_Limit' => 'Выбранные файлы/папки слишком большие для %s. Ограничение: %d Мб за одну операцию', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'Выбрано слишком много файлов/папок для %s. Ограничение: %d файлов за одну операцию', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'Вы не можете %s файлы.', // %s(1) = cut or copy, %s(2) = files or folders
'Aviary_No_Save' => 'Невозможно сохранить изображение.',
'Zip_No_Extract' => 'Извлечь невозможно. Возможно файл повреждён.',
'Zip_Invalid' => 'Это расширение не поддерживается. Разрешённые: zip, gz, tar.',
'Dir_No_Write' => 'Выбранный каталог недоступен для записи.',
'Function_Disabled' => 'Функция %s была отключена на сервере.', // %s = cut or copy
'File_Permission' => 'Разрешения на файл',
'File_Permission_Not_Allowed' => 'Изменение разрешений %s не допускается.', // %s = files or folders
'File_Permission_Recursive' => 'Применить рекурсивно?',
'File_Permission_Wrong_Mode' => "Выбранные режим разрешений некорректен.",
'User' => 'Пользователь',
'Group' => 'Группа',
'Yes' => 'Да',
'No' => 'Нет',
'Lang_Not_Found' => 'Невозможно найти язык',
'Lang_Change' => 'Сменить язык',
'File_Not_Found' => 'Невозможно найти файл',
'File_Open_Edit_Not_Allowed' => 'Вы не можете %s этот файл.', // %s = open or edit
'Edit' => 'Редактировать',
'Edit_File' => "Редактировать содержимое файла",
'File_Save_OK' => "Файл успешно сохранён",
'File_Save_Error' => "Произошла ошибка при сохранении файла",
'New_File' => 'Новый файл',
'No_Extension' => 'Необходимо добавить расширение файла',
'Valid_Extensions' => 'Разрешённые расширения файла: %s', // %s = txt,log etc.
'Upload_message' => "Перетащите файл сюда, чтобы загрузить",
'SERVER ERROR' => "СЕРВЕРНАЯ ОШИБКА",
'forbiden' => "Запрещено",
'wrong path' => "Неверный путь",
'wrong name' => "Неверное имя",
'wrong extension' => "Неверное расширение",
'wrong option' => "Неверная опция",
'wrong data' => "Неверные данные",
'wrong action' => "Неверное действие",
'wrong sub-action' => "Неверное доп.действие",
'no action passed' => "Действие не сработало",
'no path' => "Путь не существует",
'no file' => "Файл не существует",
'view type number missing' => "Данный тип отсутствует",
'Not enough Memory' => "Недостаточно памяти",
'max_size_reached' => "Папка достигла максимального размера в %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Общий размер",
);

View File

@ -1,145 +0,0 @@
<?php
return array(
'Select' => 'Vybrať',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => 'Odstrániť',
'Open' => 'Otvoriť',
'Confirm_del' => 'Naozaj odstrániť tento súbor?',
'All' => 'Všetky',
'Files' => 'Súbory',
'Images' => 'Obrázky',
'Archives' => 'Archívy',
'Error_Upload' => 'Súbor presahuje maximálnu možnú veľkosť.',
'Error_extension' => 'Typ súboru nie je podporovaný.',
'Upload_file' => 'Súbor',
'Filters' => 'Filtrovať',
'Videos' => 'Videá',
'Music' => 'Hudba',
'New_Folder' => 'Adresár',
'Folder_Created' => 'Adresár bol vytvorený',
'Existing_Folder' => 'Adresár už existuje',
'Confirm_Folder_del' => 'Naozaj chcete vymazať adresár a odstrániť tak všetky súbory v ňom?',
'Return_Files_List' => 'Späť na zoznam súborov',
'Preview' => 'Náhľad',
'Download' => 'Stiahnuť',
'Insert_Folder_Name' => 'Názov adresára:',
'Root' => 'root',
'Rename' => 'Premenovať',
'Back' => 'späť',
'View' => 'Zobraziť',
'View_list' => 'Zoznam',
'View_columns_list' => 'Stĺpce',
'View_boxes' => 'Ikony',
'Toolbar' => 'Nástroje',
'Actions' => 'Pridať',
'Rename_existing_file' => 'Súbor už existuje',
'Rename_existing_folder' => 'Adresár už existuje',
'Empty_name' => 'Názov je prázdny',
'Text_filter' => 'Vyhľadať',
'Swipe_help' => 'Pre viac možností prejdite myšou na súbor/adresár',
'Upload_base' => 'Klasické nahratie súborov',
'Upload_base_help' => "Drag & Drop files(modern browsers) or click in upper button to Add the file(s) and click on Start upload. When the upload is complete, click the 'Return to files list' button.",
'Upload_add_files' => 'Add file(s)',
'Upload_start' => 'Start upload',
'Upload_error_messages' =>array(
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
3 => 'The uploaded file was only partially uploaded',
4 => 'No file was uploaded',
6 => 'Missing a temporary folder',
7 => 'Failed to write file to disk',
8 => 'A PHP extension stopped the file upload',
'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini',
'max_file_size' => 'File is too big',
'min_file_size' => 'File is too small',
'accept_file_types' => 'Filetype not allowed',
'max_number_of_files' => 'Maximum number of files exceeded',
'max_width' => 'Image exceeds maximum width',
'min_width' => 'Image requires a minimum width',
'max_height' => 'Image exceeds maximum height',
'min_height' => 'Image requires a minimum height',
'abort' => 'File upload aborted',
'image_resize' => 'Failed to resize image'
),
'Upload_url' => 'From url',
'Type_dir' => 'dir',
'Type' => 'Typ',
'Dimension' => 'Rozlíšenie',
'Size' => 'Veľkosť',
'Date' => 'Dátum',
'Filename' => 'Názov',
'Operations' => 'Operácie',
'Date_type' => 'd.m.Y',
'OK' => 'OK',
'Cancel' => 'Zrušiť',
'Sorting' => 'Zoradiť',
'Show_url' => 'Zobratiť URL',
'Extract' => 'Rozbaliť sem',
'File_info' => 'Informácie o súbore',
'Edit_image' => 'Upraviť obrázok',
'Duplicate' => 'Duplikovať',
'Folders' => 'Adresáre',
'Copy' => 'Kopírovať',
'Cut' => 'Vystrihnúť',
'Paste' => 'Prilepiť',
'CB' => 'Schránka', // clipboard
'Paste_Here' => 'Prilepiť do tohto adresára',
'Paste_Confirm' => 'Naozaj chcete prilepiť súbory do tohto adresára? Existujúce súbory sa prepíšu.',
'Paste_Failed' => 'Zlyhalo prilepenie súborov',
'Clear_Clipboard' => 'Vyčistiť schránku',
'Clear_Clipboard_Confirm' => 'Naozaj chcete vyčistiť schránku?',
'Files_ON_Clipboard' => 'Máte súbory v schránke.',
'Copy_Cut_Size_Limit' => 'Vybrané položky sú príliš veľké na to aby boli vystrihnuté alebo kopírované. Limit: %d MB/operácia', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'Vybrali ste príliš veľa položiek na to aby boli vystrihnuté alebo kopírované. Limit: %d files/operácia', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'Nemáte povolenie na vystrihnutie alebo kopírovanie položiek.', // %s(1) = cut or copy, %s(2) = files or folders
'Aviary_No_Save' => 'Obrázok nebol uložený.',
'Zip_No_Extract' => 'Súbor nemožno rozbaliť. Môže byť poškodený.',
'Zip_Invalid' => 'Tento typ súboru nemožno rozbaliť. Povolené formáty: zip, gz, tar.',
'Dir_No_Write' => 'Do vybraného adresára nemožno zapisovať.',
'Function_Disabled' => 'Funkciu vystrihnúť alebo kopírovať nepodporuje Vás webhosting.', // %s = cut or copy
'File_Permission' => 'Povolenia súborov',
'File_Permission_Not_Allowed' => 'Zmena povolení súborov alebo adresárov nie je povolená.', // %s = files or folders
'File_Permission_Recursive' => 'Použiť na vnorené súbory a adresáre?',
'File_Permission_Wrong_Mode' => "Nesprávny mód povolenia",
'User' => 'Užívateľ',
'Group' => 'Skupina',
'Yes' => 'Áno',
'No' => 'Nie',
'Lang_Not_Found' => 'Jazyk nebol nájdený.',
'Lang_Change' => 'Zmeniť jazyk',
'File_Not_Found' => 'Súbor sa nenašiel.',
'File_Open_Edit_Not_Allowed' => 'Nemáte právo otvoriť alebo upravovať tento súbor.', // %s = open or edit
'Edit' => 'Upraviť',
'Edit_File' => "Upraviť obsah súboru",
'File_Save_OK' => "Súbor bol uložený.",
'File_Save_Error' => "Nastala chyba! Súbor nebol uložený.",
'New_File' => 'Nový súbor',
'No_Extension' => 'Musíte pridať príponu súboru.',
'Valid_Extensions' => 'Povolené prípony: %s', // %s = txt,log etc.
'Upload_message' => "Drop file here to upload",
'SERVER ERROR' => "SERVER ERROR",
'forbiden' => "Forbiden",
'wrong path' => "Wrong path",
'wrong name' => "Wrong name",
'wrong extension' => "Wrong extension",
'wrong option' => "Wrong option",
'wrong data' => "Wrong data",
'wrong action' => "Wrong action",
'wrong sub-action' => "Wrong sub-actio",
'no action passed' => "No action passed",
'no path' => "No path",
'no file' => "No file",
'view type number missing' => "View type number missing",
'Not enough Memory' => "Not enough Memory",
'max_size_reached' => "Your image folder has reach its maximale size of %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Total size",
);

View File

@ -1,145 +0,0 @@
<?php
return array(
'Select' => 'Označi',
'Deselect_All' => 'Deselect All',
'Select_All' => 'Select All',
'Erase' => 'Izbriši',
'Open' => 'Odpri',
'Confirm_del' => 'Ali res želite izbrisati to datoteko?',
'All' => 'Vse',
'Files' => 'Datoteke',
'Images' => 'Slike',
'Archives' => 'Arhiv',
'Error_Upload' => 'Velikost datoteke presega maksimalno dovoljeno velikost.',
'Error_extension' => 'Izbrana vrsta datoteke ni dovoljena.',
'Upload_file' => 'Naloži datoteke na strežnik',
'Filters' => 'Filtri',
'Videos' => 'Video',
'Music' => 'Glasba',
'New_Folder' => 'Nova mapa',
'Folder_Created' => 'Mapa je bila ustvarjena',
'Existing_Folder' => 'Obstoječa mapa',
'Confirm_Folder_del' => 'Ali res želite izbrisati mapo in vso vsebino, ki je v mapi?',
'Return_Files_List' => 'Nazaj na seznam datotek',
'Preview' => 'Predogled',
'Download' => 'Prenesi',
'Insert_Folder_Name' => 'Vpište ime mape:',
'Root' => 'Domov',
'Rename' => 'Preimenuj',
'Back' => 'Nazaj',
'View' => 'Prikaz',
'View_list' => 'Seznam',
'View_columns_list' => 'Stolpci',
'View_boxes' => 'Okvirji',
'Toolbar' => 'Orodna vrstica',
'Actions' => 'Akcije',
'Rename_existing_file' => 'Datoteka že obstaja',
'Rename_existing_folder' => 'Mapa že obstaja',
'Empty_name' => 'Ime je prazno',
'Text_filter' => 'išči',
'Swipe_help' => 'Izmakni ime datoteke/mape za prikaz možnosti',
'Upload_base' => 'Osnovni način',
'Upload_base_help' => "Drag & Drop files(modern browsers) or click in upper button to Add the file(s) and click on Start upload. When the upload is complete, click the 'Return to files list' button.",
'Upload_add_files' => 'Add file(s)',
'Upload_start' => 'Start upload',
'Upload_error_messages' =>array(
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
3 => 'The uploaded file was only partially uploaded',
4 => 'No file was uploaded',
6 => 'Missing a temporary folder',
7 => 'Failed to write file to disk',
8 => 'A PHP extension stopped the file upload',
'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini',
'max_file_size' => 'File is too big',
'min_file_size' => 'File is too small',
'accept_file_types' => 'Filetype not allowed',
'max_number_of_files' => 'Maximum number of files exceeded',
'max_width' => 'Image exceeds maximum width',
'min_width' => 'Image requires a minimum width',
'max_height' => 'Image exceeds maximum height',
'min_height' => 'Image requires a minimum height',
'abort' => 'File upload aborted',
'image_resize' => 'Failed to resize image'
),
'Upload_url' => 'From url',
'Type_dir' => 'Mapa',
'Type' => 'Vrsta',
'Dimension' => 'Dimenzija',
'Size' => 'Velikost',
'Date' => 'Datum',
'Filename' => 'Ime',
'Operations' => 'Ukazi',
'Date_type' => 'd.m.y',
'OK' => 'Potrdi',
'Cancel' => 'Prekliči',
'Sorting' => 'Razvrsti po:',
'Show_url' => 'Prikaži povezavo',
'Extract' => 'Razširi sem',
'File_info' => 'Podatki o datoteki',
'Edit_image' => 'Uredi sliko',
'Duplicate' => 'Podvoji',
'Folders' => 'Folders',
'Copy' => 'Copy',
'Cut' => 'Cut',
'Paste' => 'Paste',
'CB' => 'CB', // clipboard
'Paste_Here' => 'Paste to this directory',
'Paste_Confirm' => 'Are you sure you want to paste to this directory? This will overwrite existing files/folders if encountered any.',
'Paste_Failed' => 'Failed to paste file(s)',
'Clear_Clipboard' => 'Clear clipboard',
'Clear_Clipboard_Confirm' => 'Are you sure you want to clear the clipboard?',
'Files_ON_Clipboard' => 'There are files on the clipboard.',
'Copy_Cut_Size_Limit' => 'The selected files/folders are too big to %s. Limit: %d MB/operation', // %s = cut or copy
'Copy_Cut_Count_Limit' => 'You selected too many files/folders to %s. Limit: %d files/operation', // %s = cut or copy
'Copy_Cut_Not_Allowed' => 'You are not allowed to %s files.', // %s(1) = cut or copy, %s(2) = files or folders
'Aviary_No_Save' => 'Could not save image',
'Zip_No_Extract' => 'Could not extract. File might be corrupt.',
'Zip_Invalid' => 'This extension is not supported. Valid: zip, gz, tar.',
'Dir_No_Write' => 'The directory you selected is not writable.',
'Function_Disabled' => 'The %s function has been disabled by the server.', // %s = cut or copy
'File_Permission' => 'File permission',
'File_Permission_Not_Allowed' => 'Changing %s permissions are not allowed.', // %s = files or folders
'File_Permission_Recursive' => 'Apply recursively?',
'File_Permission_Wrong_Mode' => "The supplied permission mode is incorrect.",
'User' => 'User',
'Group' => 'Group',
'Yes' => 'Yes',
'No' => 'No',
'Lang_Not_Found' => 'Could not find language.',
'Lang_Change' => 'Change the language',
'File_Not_Found' => 'Could not find the file.',
'File_Open_Edit_Not_Allowed' => 'You are not allowed to %s this file.', // %s = open or edit
'Edit' => 'Edit',
'Edit_File' => "Edit file's content",
'File_Save_OK' => "File successfully saved.",
'File_Save_Error' => "There was an error while saving the file.",
'New_File' => 'New File',
'No_Extension' => 'You have to add a file extension.',
'Valid_Extensions' => 'Valid extensions: %s', // %s = txt,log etc.
'Upload_message' => "Drop file here to upload",
'SERVER ERROR' => "SERVER ERROR",
'forbiden' => "Forbiden",
'wrong path' => "Wrong path",
'wrong name' => "Wrong name",
'wrong extension' => "Wrong extension",
'wrong option' => "Wrong option",
'wrong data' => "Wrong data",
'wrong action' => "Wrong action",
'wrong sub-action' => "Wrong sub-actio",
'no action passed' => "No action passed",
'no path' => "No path",
'no file' => "No file",
'view type number missing' => "View type number missing",
'Not enough Memory' => "Not enough Memory",
'max_size_reached' => "Your image folder has reach its maximale size of %d MB.", //%d = max overall size
'B' => "B",
'KB' => "KB",
'MB' => "MB",
'GB' => "GB",
'TB' => "TB",
'total size' => "Total size",
);

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