@@ -10,54 +10,54 @@ |
||
| 10 | 10 | \***************************************************************************/ |
| 11 | 11 | |
| 12 | 12 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 13 | - return; |
|
| 13 | + return; |
|
| 14 | 14 | } |
| 15 | 15 | |
| 16 | 16 | class IndenteurXML { |
| 17 | - public function debutElement($phraseur, $name, $attrs) { |
|
| 18 | - xml_debutElement($this, $name, $attrs); |
|
| 19 | - } |
|
| 20 | - |
|
| 21 | - public function finElement($phraseur, $name) { |
|
| 22 | - xml_finElement($this, $name); |
|
| 23 | - } |
|
| 24 | - |
|
| 25 | - public function textElement($phraseur, $data) { |
|
| 26 | - xml_textElement($this, $data); |
|
| 27 | - } |
|
| 28 | - |
|
| 29 | - public function piElement($phraseur, $target, $data) { |
|
| 30 | - xml_PiElement($this, $target, $data); |
|
| 31 | - } |
|
| 32 | - |
|
| 33 | - public function defaultElement($phraseur, $data) { |
|
| 34 | - xml_defaultElement($this, $data); |
|
| 35 | - } |
|
| 36 | - |
|
| 37 | - public function phraserTout($phraseur, $data) { |
|
| 38 | - xml_parsestring($this, $data); |
|
| 39 | - } |
|
| 40 | - |
|
| 41 | - public $depth = ''; |
|
| 42 | - public $res = ''; |
|
| 43 | - public $err = []; |
|
| 44 | - public $contenu = []; |
|
| 45 | - public $ouvrant = []; |
|
| 46 | - public $reperes = []; |
|
| 47 | - public $entete = ''; |
|
| 48 | - public $page = ''; |
|
| 49 | - public $dtc = null; |
|
| 50 | - public $sax = null; |
|
| 17 | + public function debutElement($phraseur, $name, $attrs) { |
|
| 18 | + xml_debutElement($this, $name, $attrs); |
|
| 19 | + } |
|
| 20 | + |
|
| 21 | + public function finElement($phraseur, $name) { |
|
| 22 | + xml_finElement($this, $name); |
|
| 23 | + } |
|
| 24 | + |
|
| 25 | + public function textElement($phraseur, $data) { |
|
| 26 | + xml_textElement($this, $data); |
|
| 27 | + } |
|
| 28 | + |
|
| 29 | + public function piElement($phraseur, $target, $data) { |
|
| 30 | + xml_PiElement($this, $target, $data); |
|
| 31 | + } |
|
| 32 | + |
|
| 33 | + public function defaultElement($phraseur, $data) { |
|
| 34 | + xml_defaultElement($this, $data); |
|
| 35 | + } |
|
| 36 | + |
|
| 37 | + public function phraserTout($phraseur, $data) { |
|
| 38 | + xml_parsestring($this, $data); |
|
| 39 | + } |
|
| 40 | + |
|
| 41 | + public $depth = ''; |
|
| 42 | + public $res = ''; |
|
| 43 | + public $err = []; |
|
| 44 | + public $contenu = []; |
|
| 45 | + public $ouvrant = []; |
|
| 46 | + public $reperes = []; |
|
| 47 | + public $entete = ''; |
|
| 48 | + public $page = ''; |
|
| 49 | + public $dtc = null; |
|
| 50 | + public $sax = null; |
|
| 51 | 51 | } |
| 52 | 52 | |
| 53 | 53 | function xml_indenter_dist($page, $apply = false) { |
| 54 | - $sax = charger_fonction('sax', 'xml'); |
|
| 55 | - $f = new IndenteurXML(); |
|
| 56 | - $sax($page, $apply, $f); |
|
| 57 | - if (!$f->err) { |
|
| 58 | - return $f->entete . $f->res; |
|
| 59 | - } |
|
| 60 | - spip_log('indentation impossible ' . (is_countable($f->err) ? count($f->err) : 0) . ' erreurs de validation'); |
|
| 61 | - |
|
| 62 | - return $f->entete . $f->page; |
|
| 54 | + $sax = charger_fonction('sax', 'xml'); |
|
| 55 | + $f = new IndenteurXML(); |
|
| 56 | + $sax($page, $apply, $f); |
|
| 57 | + if (!$f->err) { |
|
| 58 | + return $f->entete . $f->res; |
|
| 59 | + } |
|
| 60 | + spip_log('indentation impossible ' . (is_countable($f->err) ? count($f->err) : 0) . ' erreurs de validation'); |
|
| 61 | + |
|
| 62 | + return $f->entete . $f->page; |
|
| 63 | 63 | } |
@@ -10,7 +10,7 @@ discard block |
||
| 10 | 10 | \***************************************************************************/ |
| 11 | 11 | |
| 12 | 12 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 13 | - return; |
|
| 13 | + return; |
|
| 14 | 14 | } |
| 15 | 15 | |
| 16 | 16 | |
@@ -20,18 +20,18 @@ discard block |
||
| 20 | 20 | |
| 21 | 21 | |
| 22 | 22 | function req_sqlite3_dist($addr, $port, $login, #[\SensitiveParameter] $pass, $db = '', $prefixe = '') { |
| 23 | - return req_sqlite_dist($addr, $port, $login, $pass, $db, $prefixe, $sqlite_version = 3); |
|
| 23 | + return req_sqlite_dist($addr, $port, $login, $pass, $db, $prefixe, $sqlite_version = 3); |
|
| 24 | 24 | } |
| 25 | 25 | |
| 26 | 26 | |
| 27 | 27 | function spip_sqlite3_constantes() { |
| 28 | - if (!defined('SPIP_SQLITE3_ASSOC')) { |
|
| 29 | - define('SPIP_SQLITE3_ASSOC', PDO::FETCH_ASSOC); |
|
| 30 | - define('SPIP_SQLITE3_NUM', PDO::FETCH_NUM); |
|
| 31 | - define('SPIP_SQLITE3_BOTH', PDO::FETCH_BOTH); |
|
| 32 | - } |
|
| 28 | + if (!defined('SPIP_SQLITE3_ASSOC')) { |
|
| 29 | + define('SPIP_SQLITE3_ASSOC', PDO::FETCH_ASSOC); |
|
| 30 | + define('SPIP_SQLITE3_NUM', PDO::FETCH_NUM); |
|
| 31 | + define('SPIP_SQLITE3_BOTH', PDO::FETCH_BOTH); |
|
| 32 | + } |
|
| 33 | 33 | } |
| 34 | 34 | |
| 35 | 35 | function spip_versions_sqlite3() { |
| 36 | - return _sqlite_charger_version(3) ? 3 : false; |
|
| 36 | + return _sqlite_charger_version(3) ? 3 : false; |
|
| 37 | 37 | } |
@@ -19,11 +19,11 @@ discard block |
||
| 19 | 19 | */ |
| 20 | 20 | |
| 21 | 21 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 22 | - return; |
|
| 22 | + return; |
|
| 23 | 23 | } |
| 24 | 24 | |
| 25 | 25 | if (!defined('_MYSQL_NOPLANES')) { |
| 26 | - define('_MYSQL_NOPLANES', true); |
|
| 26 | + define('_MYSQL_NOPLANES', true); |
|
| 27 | 27 | } |
| 28 | 28 | |
| 29 | 29 | /** |
@@ -40,112 +40,112 @@ discard block |
||
| 40 | 40 | * - tableau décrivant la connexion sinon |
| 41 | 41 | */ |
| 42 | 42 | function req_mysql_dist($host, $port, $login, #[\SensitiveParameter] $pass, $db = '', $prefixe = '') { |
| 43 | - if (!extension_loaded(\mysqli::class)) { |
|
| 44 | - return false; |
|
| 45 | - } |
|
| 46 | - |
|
| 47 | - // si port est fourni mais pas host, c'est un socket -> compat avec vieille syntaxe de mysql_connect() et anciens fichiers connect.php |
|
| 48 | - try { |
|
| 49 | - if ( |
|
| 50 | - $port and !is_numeric($socket = $port) |
|
| 51 | - and (!$host or $host === 'localhost') |
|
| 52 | - ) { |
|
| 53 | - $link = @mysqli_connect($host, $login, $pass, '', null, $socket); |
|
| 54 | - } elseif ($port) { |
|
| 55 | - $link = @mysqli_connect($host, $login, $pass, '', $port); |
|
| 56 | - } else { |
|
| 57 | - $link = @mysqli_connect($host, $login, $pass); |
|
| 58 | - } |
|
| 59 | - } catch (\mysqli_sql_exception $e) { |
|
| 60 | - spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG); |
|
| 61 | - $link = false; |
|
| 62 | - } |
|
| 63 | - |
|
| 64 | - if (!$link) { |
|
| 65 | - spip_log('Echec mysqli_connect. Erreur : ' . mysqli_connect_error(), 'mysql.' . _LOG_HS); |
|
| 66 | - |
|
| 67 | - return false; |
|
| 68 | - } |
|
| 69 | - $last = ''; |
|
| 70 | - if (!$db) { |
|
| 71 | - $ok = $link; |
|
| 72 | - $db = 'spip'; |
|
| 73 | - } else { |
|
| 74 | - $ok = mysqli_select_db($link, $db); |
|
| 75 | - if ( |
|
| 76 | - defined('_MYSQL_SET_SQL_MODE') |
|
| 77 | - or defined('_MYSQL_SQL_MODE_TEXT_NOT_NULL') // compatibilite |
|
| 78 | - ) { |
|
| 79 | - mysqli_query($link, $last = "set sql_mode=''"); |
|
| 80 | - } |
|
| 81 | - } |
|
| 82 | - |
|
| 83 | - spip_log( |
|
| 84 | - "Connexion MySQLi vers $host, base $db, prefixe $prefixe " . ($ok ? 'operationnelle' : 'impossible'), |
|
| 85 | - _LOG_DEBUG |
|
| 86 | - ); |
|
| 87 | - |
|
| 88 | - return !$ok ? false : [ |
|
| 89 | - 'db' => $db, |
|
| 90 | - 'last' => $last, |
|
| 91 | - 'prefixe' => $prefixe ?: $db, |
|
| 92 | - 'link' => $link, |
|
| 93 | - 'total_requetes' => 0, |
|
| 94 | - ]; |
|
| 43 | + if (!extension_loaded(\mysqli::class)) { |
|
| 44 | + return false; |
|
| 45 | + } |
|
| 46 | + |
|
| 47 | + // si port est fourni mais pas host, c'est un socket -> compat avec vieille syntaxe de mysql_connect() et anciens fichiers connect.php |
|
| 48 | + try { |
|
| 49 | + if ( |
|
| 50 | + $port and !is_numeric($socket = $port) |
|
| 51 | + and (!$host or $host === 'localhost') |
|
| 52 | + ) { |
|
| 53 | + $link = @mysqli_connect($host, $login, $pass, '', null, $socket); |
|
| 54 | + } elseif ($port) { |
|
| 55 | + $link = @mysqli_connect($host, $login, $pass, '', $port); |
|
| 56 | + } else { |
|
| 57 | + $link = @mysqli_connect($host, $login, $pass); |
|
| 58 | + } |
|
| 59 | + } catch (\mysqli_sql_exception $e) { |
|
| 60 | + spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG); |
|
| 61 | + $link = false; |
|
| 62 | + } |
|
| 63 | + |
|
| 64 | + if (!$link) { |
|
| 65 | + spip_log('Echec mysqli_connect. Erreur : ' . mysqli_connect_error(), 'mysql.' . _LOG_HS); |
|
| 66 | + |
|
| 67 | + return false; |
|
| 68 | + } |
|
| 69 | + $last = ''; |
|
| 70 | + if (!$db) { |
|
| 71 | + $ok = $link; |
|
| 72 | + $db = 'spip'; |
|
| 73 | + } else { |
|
| 74 | + $ok = mysqli_select_db($link, $db); |
|
| 75 | + if ( |
|
| 76 | + defined('_MYSQL_SET_SQL_MODE') |
|
| 77 | + or defined('_MYSQL_SQL_MODE_TEXT_NOT_NULL') // compatibilite |
|
| 78 | + ) { |
|
| 79 | + mysqli_query($link, $last = "set sql_mode=''"); |
|
| 80 | + } |
|
| 81 | + } |
|
| 82 | + |
|
| 83 | + spip_log( |
|
| 84 | + "Connexion MySQLi vers $host, base $db, prefixe $prefixe " . ($ok ? 'operationnelle' : 'impossible'), |
|
| 85 | + _LOG_DEBUG |
|
| 86 | + ); |
|
| 87 | + |
|
| 88 | + return !$ok ? false : [ |
|
| 89 | + 'db' => $db, |
|
| 90 | + 'last' => $last, |
|
| 91 | + 'prefixe' => $prefixe ?: $db, |
|
| 92 | + 'link' => $link, |
|
| 93 | + 'total_requetes' => 0, |
|
| 94 | + ]; |
|
| 95 | 95 | } |
| 96 | 96 | |
| 97 | 97 | |
| 98 | 98 | $GLOBALS['spip_mysql_functions_1'] = [ |
| 99 | - 'alter' => 'spip_mysql_alter', |
|
| 100 | - 'count' => 'spip_mysql_count', |
|
| 101 | - 'countsel' => 'spip_mysql_countsel', |
|
| 102 | - 'create' => 'spip_mysql_create', |
|
| 103 | - 'create_base' => 'spip_mysql_create_base', |
|
| 104 | - 'create_view' => 'spip_mysql_create_view', |
|
| 105 | - 'date_proche' => 'spip_mysql_date_proche', |
|
| 106 | - 'delete' => 'spip_mysql_delete', |
|
| 107 | - 'drop_table' => 'spip_mysql_drop_table', |
|
| 108 | - 'drop_view' => 'spip_mysql_drop_view', |
|
| 109 | - 'errno' => 'spip_mysql_errno', |
|
| 110 | - 'error' => 'spip_mysql_error', |
|
| 111 | - 'explain' => 'spip_mysql_explain', |
|
| 112 | - 'fetch' => 'spip_mysql_fetch', |
|
| 113 | - 'seek' => 'spip_mysql_seek', |
|
| 114 | - 'free' => 'spip_mysql_free', |
|
| 115 | - 'hex' => 'spip_mysql_hex', |
|
| 116 | - 'in' => 'spip_mysql_in', |
|
| 117 | - 'insert' => 'spip_mysql_insert', |
|
| 118 | - 'insertq' => 'spip_mysql_insertq', |
|
| 119 | - 'insertq_multi' => 'spip_mysql_insertq_multi', |
|
| 120 | - 'listdbs' => 'spip_mysql_listdbs', |
|
| 121 | - 'multi' => 'spip_mysql_multi', |
|
| 122 | - 'optimize' => 'spip_mysql_optimize', |
|
| 123 | - 'query' => 'spip_mysql_query', |
|
| 124 | - 'quote' => 'spip_mysql_quote', |
|
| 125 | - 'replace' => 'spip_mysql_replace', |
|
| 126 | - 'replace_multi' => 'spip_mysql_replace_multi', |
|
| 127 | - 'repair' => 'spip_mysql_repair', |
|
| 128 | - 'select' => 'spip_mysql_select', |
|
| 129 | - 'selectdb' => 'spip_mysql_selectdb', |
|
| 130 | - 'set_charset' => 'spip_mysql_set_charset', |
|
| 131 | - 'get_charset' => 'spip_mysql_get_charset', |
|
| 132 | - 'showbase' => 'spip_mysql_showbase', |
|
| 133 | - 'showtable' => 'spip_mysql_showtable', |
|
| 134 | - 'table_exists' => 'spip_mysql_table_exists', |
|
| 135 | - 'update' => 'spip_mysql_update', |
|
| 136 | - 'updateq' => 'spip_mysql_updateq', |
|
| 137 | - |
|
| 138 | - // association de chaque nom http d'un charset aux couples MySQL |
|
| 139 | - 'charsets' => [ |
|
| 140 | - 'cp1250' => ['charset' => 'cp1250', 'collation' => 'cp1250_general_ci'], |
|
| 141 | - 'cp1251' => ['charset' => 'cp1251', 'collation' => 'cp1251_general_ci'], |
|
| 142 | - 'cp1256' => ['charset' => 'cp1256', 'collation' => 'cp1256_general_ci'], |
|
| 143 | - 'iso-8859-1' => ['charset' => 'latin1', 'collation' => 'latin1_swedish_ci'], |
|
| 99 | + 'alter' => 'spip_mysql_alter', |
|
| 100 | + 'count' => 'spip_mysql_count', |
|
| 101 | + 'countsel' => 'spip_mysql_countsel', |
|
| 102 | + 'create' => 'spip_mysql_create', |
|
| 103 | + 'create_base' => 'spip_mysql_create_base', |
|
| 104 | + 'create_view' => 'spip_mysql_create_view', |
|
| 105 | + 'date_proche' => 'spip_mysql_date_proche', |
|
| 106 | + 'delete' => 'spip_mysql_delete', |
|
| 107 | + 'drop_table' => 'spip_mysql_drop_table', |
|
| 108 | + 'drop_view' => 'spip_mysql_drop_view', |
|
| 109 | + 'errno' => 'spip_mysql_errno', |
|
| 110 | + 'error' => 'spip_mysql_error', |
|
| 111 | + 'explain' => 'spip_mysql_explain', |
|
| 112 | + 'fetch' => 'spip_mysql_fetch', |
|
| 113 | + 'seek' => 'spip_mysql_seek', |
|
| 114 | + 'free' => 'spip_mysql_free', |
|
| 115 | + 'hex' => 'spip_mysql_hex', |
|
| 116 | + 'in' => 'spip_mysql_in', |
|
| 117 | + 'insert' => 'spip_mysql_insert', |
|
| 118 | + 'insertq' => 'spip_mysql_insertq', |
|
| 119 | + 'insertq_multi' => 'spip_mysql_insertq_multi', |
|
| 120 | + 'listdbs' => 'spip_mysql_listdbs', |
|
| 121 | + 'multi' => 'spip_mysql_multi', |
|
| 122 | + 'optimize' => 'spip_mysql_optimize', |
|
| 123 | + 'query' => 'spip_mysql_query', |
|
| 124 | + 'quote' => 'spip_mysql_quote', |
|
| 125 | + 'replace' => 'spip_mysql_replace', |
|
| 126 | + 'replace_multi' => 'spip_mysql_replace_multi', |
|
| 127 | + 'repair' => 'spip_mysql_repair', |
|
| 128 | + 'select' => 'spip_mysql_select', |
|
| 129 | + 'selectdb' => 'spip_mysql_selectdb', |
|
| 130 | + 'set_charset' => 'spip_mysql_set_charset', |
|
| 131 | + 'get_charset' => 'spip_mysql_get_charset', |
|
| 132 | + 'showbase' => 'spip_mysql_showbase', |
|
| 133 | + 'showtable' => 'spip_mysql_showtable', |
|
| 134 | + 'table_exists' => 'spip_mysql_table_exists', |
|
| 135 | + 'update' => 'spip_mysql_update', |
|
| 136 | + 'updateq' => 'spip_mysql_updateq', |
|
| 137 | + |
|
| 138 | + // association de chaque nom http d'un charset aux couples MySQL |
|
| 139 | + 'charsets' => [ |
|
| 140 | + 'cp1250' => ['charset' => 'cp1250', 'collation' => 'cp1250_general_ci'], |
|
| 141 | + 'cp1251' => ['charset' => 'cp1251', 'collation' => 'cp1251_general_ci'], |
|
| 142 | + 'cp1256' => ['charset' => 'cp1256', 'collation' => 'cp1256_general_ci'], |
|
| 143 | + 'iso-8859-1' => ['charset' => 'latin1', 'collation' => 'latin1_swedish_ci'], |
|
| 144 | 144 | //'iso-8859-6'=>array('charset'=>'latin1','collation'=>'latin1_swedish_ci'), |
| 145 | - 'iso-8859-9' => ['charset' => 'latin5', 'collation' => 'latin5_turkish_ci'], |
|
| 145 | + 'iso-8859-9' => ['charset' => 'latin5', 'collation' => 'latin5_turkish_ci'], |
|
| 146 | 146 | //'iso-8859-15'=>array('charset'=>'latin1','collation'=>'latin1_swedish_ci'), |
| 147 | - 'utf-8' => ['charset' => 'utf8', 'collation' => 'utf8_general_ci'] |
|
| 148 | - ] |
|
| 147 | + 'utf-8' => ['charset' => 'utf8', 'collation' => 'utf8_general_ci'] |
|
| 148 | + ] |
|
| 149 | 149 | ]; |
| 150 | 150 | |
| 151 | 151 | |
@@ -156,9 +156,9 @@ discard block |
||
| 156 | 156 | * @return Object Information de connexion pour mysqli |
| 157 | 157 | */ |
| 158 | 158 | function _mysql_link($serveur = '') { |
| 159 | - $link = &$GLOBALS['connexions'][$serveur ?: 0]['link']; |
|
| 159 | + $link = &$GLOBALS['connexions'][$serveur ?: 0]['link']; |
|
| 160 | 160 | |
| 161 | - return $link; |
|
| 161 | + return $link; |
|
| 162 | 162 | } |
| 163 | 163 | |
| 164 | 164 | |
@@ -171,10 +171,10 @@ discard block |
||
| 171 | 171 | * @return mysqli_result|bool Jeu de résultats pour fetch() |
| 172 | 172 | */ |
| 173 | 173 | function spip_mysql_set_charset($charset, $serveur = '', $requeter = true) { |
| 174 | - $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]; |
|
| 175 | - spip_log('changement de charset sql : ' . 'SET NAMES ' . _q($charset), _LOG_DEBUG); |
|
| 174 | + $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]; |
|
| 175 | + spip_log('changement de charset sql : ' . 'SET NAMES ' . _q($charset), _LOG_DEBUG); |
|
| 176 | 176 | |
| 177 | - return mysqli_query($connexion['link'], $connexion['last'] = 'SET NAMES ' . _q($charset)); |
|
| 177 | + return mysqli_query($connexion['link'], $connexion['last'] = 'SET NAMES ' . _q($charset)); |
|
| 178 | 178 | } |
| 179 | 179 | |
| 180 | 180 | |
@@ -187,11 +187,11 @@ discard block |
||
| 187 | 187 | * @return array Description du charset (son nom est dans 'charset') |
| 188 | 188 | */ |
| 189 | 189 | function spip_mysql_get_charset($charset = [], $serveur = '', $requeter = true) { |
| 190 | - $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]; |
|
| 191 | - $connexion['last'] = $c = 'SHOW CHARACTER SET' |
|
| 192 | - . (!$charset ? '' : (' LIKE ' . _q($charset['charset']))); |
|
| 190 | + $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]; |
|
| 191 | + $connexion['last'] = $c = 'SHOW CHARACTER SET' |
|
| 192 | + . (!$charset ? '' : (' LIKE ' . _q($charset['charset']))); |
|
| 193 | 193 | |
| 194 | - return spip_mysql_fetch(mysqli_query($connexion['link'], $c), null, $serveur); |
|
| 194 | + return spip_mysql_fetch(mysqli_query($connexion['link'], $c), null, $serveur); |
|
| 195 | 195 | } |
| 196 | 196 | |
| 197 | 197 | /** |
@@ -207,80 +207,80 @@ discard block |
||
| 207 | 207 | */ |
| 208 | 208 | function spip_mysql_query($query, $serveur = '', $requeter = true) { |
| 209 | 209 | |
| 210 | - $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]; |
|
| 211 | - $prefixe = $connexion['prefixe']; |
|
| 212 | - $link = $connexion['link']; |
|
| 213 | - $db = $connexion['db']; |
|
| 214 | - |
|
| 215 | - $query = _mysql_traite_query($query, $db, $prefixe); |
|
| 216 | - |
|
| 217 | - // renvoyer la requete inerte si demandee |
|
| 218 | - if (!$requeter) { |
|
| 219 | - return $query; |
|
| 220 | - } |
|
| 221 | - |
|
| 222 | - if (isset($_GET['var_profile']) or (defined('_DEBUG_TRACE_QUERIES') and _DEBUG_TRACE_QUERIES)) { |
|
| 223 | - include_spip('public/tracer'); |
|
| 224 | - $t = trace_query_start(); |
|
| 225 | - } else { |
|
| 226 | - $t = 0; |
|
| 227 | - } |
|
| 228 | - |
|
| 229 | - $connexion['last'] = $query; |
|
| 230 | - $connexion['total_requetes']++; |
|
| 231 | - |
|
| 232 | - // ajouter un debug utile dans log/mysql-slow.log ? |
|
| 233 | - $debug = ''; |
|
| 234 | - if (defined('_DEBUG_SLOW_QUERIES') and _DEBUG_SLOW_QUERIES) { |
|
| 235 | - if (isset($GLOBALS['debug']['aucasou'])) { |
|
| 236 | - [, $id, , $infos] = $GLOBALS['debug']['aucasou']; |
|
| 237 | - $debug .= "BOUCLE$id @ " . ($infos[0] ?? '') . ' | '; |
|
| 238 | - } |
|
| 239 | - if (isset($_SERVER['REQUEST_URI'])) { |
|
| 240 | - $debug .= $_SERVER['REQUEST_URI']; |
|
| 241 | - } |
|
| 242 | - if (!empty($GLOBALS['ip'])) { |
|
| 243 | - $debug .= ' + ' . $GLOBALS['ip']; |
|
| 244 | - } |
|
| 245 | - $debug = ' /* ' . mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)) . ' */'; |
|
| 246 | - } |
|
| 247 | - try { |
|
| 248 | - $r = mysqli_query($link, $query . $debug); |
|
| 249 | - } catch (\mysqli_sql_exception $e) { |
|
| 250 | - spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG); |
|
| 251 | - $r = false; |
|
| 252 | - // TODO: utiliser l’exception ensuite plutôt que les appels à spip_mysql_errno() |
|
| 253 | - // mais il faut pour php < 8.1 forcer les exeptions via mysqli_report(). |
|
| 254 | - } |
|
| 255 | - |
|
| 256 | - //Eviter de propager le GoneAway sur les autres requetes d'un même processus PHP |
|
| 257 | - if ($e = spip_mysql_errno($serveur)) { // Log d'un Gone Away |
|
| 258 | - if ($e == 2006) { //Si Gone Away on relance une connexion vierge |
|
| 259 | - //Fermer la connexion defaillante |
|
| 260 | - mysqli_close($connexion['link']); |
|
| 261 | - unset($GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]); |
|
| 262 | - //Relancer une connexion vierge |
|
| 263 | - spip_connect($serveur); |
|
| 264 | - $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]; |
|
| 265 | - $link = $connexion['link']; |
|
| 266 | - //On retente au cas où |
|
| 267 | - try { |
|
| 268 | - $r = mysqli_query($link, $query . $debug); |
|
| 269 | - } catch (\mysqli_sql_exception $e) { |
|
| 270 | - spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG); |
|
| 271 | - $r = false; |
|
| 272 | - // TODO: utiliser l’exception ensuite plutôt que les appels à spip_mysql_errno() |
|
| 273 | - // mais il faut pour php < 8.1 forcer les exeptions via mysqli_report(). |
|
| 274 | - } |
|
| 275 | - } |
|
| 276 | - } |
|
| 277 | - |
|
| 278 | - // Log de l'erreur eventuelle |
|
| 279 | - if ($e = spip_mysql_errno($serveur)) { |
|
| 280 | - // et du fautif |
|
| 281 | - $e .= spip_mysql_error($query, $serveur); |
|
| 282 | - } |
|
| 283 | - return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r; |
|
| 210 | + $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]; |
|
| 211 | + $prefixe = $connexion['prefixe']; |
|
| 212 | + $link = $connexion['link']; |
|
| 213 | + $db = $connexion['db']; |
|
| 214 | + |
|
| 215 | + $query = _mysql_traite_query($query, $db, $prefixe); |
|
| 216 | + |
|
| 217 | + // renvoyer la requete inerte si demandee |
|
| 218 | + if (!$requeter) { |
|
| 219 | + return $query; |
|
| 220 | + } |
|
| 221 | + |
|
| 222 | + if (isset($_GET['var_profile']) or (defined('_DEBUG_TRACE_QUERIES') and _DEBUG_TRACE_QUERIES)) { |
|
| 223 | + include_spip('public/tracer'); |
|
| 224 | + $t = trace_query_start(); |
|
| 225 | + } else { |
|
| 226 | + $t = 0; |
|
| 227 | + } |
|
| 228 | + |
|
| 229 | + $connexion['last'] = $query; |
|
| 230 | + $connexion['total_requetes']++; |
|
| 231 | + |
|
| 232 | + // ajouter un debug utile dans log/mysql-slow.log ? |
|
| 233 | + $debug = ''; |
|
| 234 | + if (defined('_DEBUG_SLOW_QUERIES') and _DEBUG_SLOW_QUERIES) { |
|
| 235 | + if (isset($GLOBALS['debug']['aucasou'])) { |
|
| 236 | + [, $id, , $infos] = $GLOBALS['debug']['aucasou']; |
|
| 237 | + $debug .= "BOUCLE$id @ " . ($infos[0] ?? '') . ' | '; |
|
| 238 | + } |
|
| 239 | + if (isset($_SERVER['REQUEST_URI'])) { |
|
| 240 | + $debug .= $_SERVER['REQUEST_URI']; |
|
| 241 | + } |
|
| 242 | + if (!empty($GLOBALS['ip'])) { |
|
| 243 | + $debug .= ' + ' . $GLOBALS['ip']; |
|
| 244 | + } |
|
| 245 | + $debug = ' /* ' . mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)) . ' */'; |
|
| 246 | + } |
|
| 247 | + try { |
|
| 248 | + $r = mysqli_query($link, $query . $debug); |
|
| 249 | + } catch (\mysqli_sql_exception $e) { |
|
| 250 | + spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG); |
|
| 251 | + $r = false; |
|
| 252 | + // TODO: utiliser l’exception ensuite plutôt que les appels à spip_mysql_errno() |
|
| 253 | + // mais il faut pour php < 8.1 forcer les exeptions via mysqli_report(). |
|
| 254 | + } |
|
| 255 | + |
|
| 256 | + //Eviter de propager le GoneAway sur les autres requetes d'un même processus PHP |
|
| 257 | + if ($e = spip_mysql_errno($serveur)) { // Log d'un Gone Away |
|
| 258 | + if ($e == 2006) { //Si Gone Away on relance une connexion vierge |
|
| 259 | + //Fermer la connexion defaillante |
|
| 260 | + mysqli_close($connexion['link']); |
|
| 261 | + unset($GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]); |
|
| 262 | + //Relancer une connexion vierge |
|
| 263 | + spip_connect($serveur); |
|
| 264 | + $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]; |
|
| 265 | + $link = $connexion['link']; |
|
| 266 | + //On retente au cas où |
|
| 267 | + try { |
|
| 268 | + $r = mysqli_query($link, $query . $debug); |
|
| 269 | + } catch (\mysqli_sql_exception $e) { |
|
| 270 | + spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG); |
|
| 271 | + $r = false; |
|
| 272 | + // TODO: utiliser l’exception ensuite plutôt que les appels à spip_mysql_errno() |
|
| 273 | + // mais il faut pour php < 8.1 forcer les exeptions via mysqli_report(). |
|
| 274 | + } |
|
| 275 | + } |
|
| 276 | + } |
|
| 277 | + |
|
| 278 | + // Log de l'erreur eventuelle |
|
| 279 | + if ($e = spip_mysql_errno($serveur)) { |
|
| 280 | + // et du fautif |
|
| 281 | + $e .= spip_mysql_error($query, $serveur); |
|
| 282 | + } |
|
| 283 | + return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r; |
|
| 284 | 284 | } |
| 285 | 285 | |
| 286 | 286 | /** |
@@ -295,12 +295,12 @@ discard block |
||
| 295 | 295 | * - array : Tableau décrivant requête et temps d'exécution si var_profile actif pour tracer. |
| 296 | 296 | */ |
| 297 | 297 | function spip_mysql_alter($query, $serveur = '', $requeter = true) { |
| 298 | - // ici on supprime les ` entourant le nom de table pour permettre |
|
| 299 | - // la transposition du prefixe, compte tenu que les plugins ont la mauvaise habitude |
|
| 300 | - // d'utiliser ceux-ci, copie-colle de phpmyadmin |
|
| 301 | - $query = preg_replace(',^TABLE\s*`([^`]*)`,i', "TABLE \\1", $query); |
|
| 298 | + // ici on supprime les ` entourant le nom de table pour permettre |
|
| 299 | + // la transposition du prefixe, compte tenu que les plugins ont la mauvaise habitude |
|
| 300 | + // d'utiliser ceux-ci, copie-colle de phpmyadmin |
|
| 301 | + $query = preg_replace(',^TABLE\s*`([^`]*)`,i', "TABLE \\1", $query); |
|
| 302 | 302 | |
| 303 | - return spip_mysql_query('ALTER ' . $query, $serveur, $requeter); # i.e. que PG se debrouille |
|
| 303 | + return spip_mysql_query('ALTER ' . $query, $serveur, $requeter); # i.e. que PG se debrouille |
|
| 304 | 304 | } |
| 305 | 305 | |
| 306 | 306 | |
@@ -313,9 +313,9 @@ discard block |
||
| 313 | 313 | * @return bool Toujours true |
| 314 | 314 | */ |
| 315 | 315 | function spip_mysql_optimize($table, $serveur = '', $requeter = true) { |
| 316 | - spip_mysql_query('OPTIMIZE TABLE ' . $table); |
|
| 316 | + spip_mysql_query('OPTIMIZE TABLE ' . $table); |
|
| 317 | 317 | |
| 318 | - return true; |
|
| 318 | + return true; |
|
| 319 | 319 | } |
| 320 | 320 | |
| 321 | 321 | |
@@ -328,18 +328,18 @@ discard block |
||
| 328 | 328 | * @return array Tableau de l'explication |
| 329 | 329 | */ |
| 330 | 330 | function spip_mysql_explain($query, $serveur = '', $requeter = true) { |
| 331 | - if (strpos(ltrim($query), 'SELECT') !== 0) { |
|
| 332 | - return []; |
|
| 333 | - } |
|
| 334 | - $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]; |
|
| 335 | - $prefixe = $connexion['prefixe']; |
|
| 336 | - $link = $connexion['link']; |
|
| 337 | - $db = $connexion['db']; |
|
| 338 | - |
|
| 339 | - $query = 'EXPLAIN ' . _mysql_traite_query($query, $db, $prefixe); |
|
| 340 | - $r = mysqli_query($link, $query); |
|
| 341 | - |
|
| 342 | - return spip_mysql_fetch($r, null, $serveur); |
|
| 331 | + if (strpos(ltrim($query), 'SELECT') !== 0) { |
|
| 332 | + return []; |
|
| 333 | + } |
|
| 334 | + $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]; |
|
| 335 | + $prefixe = $connexion['prefixe']; |
|
| 336 | + $link = $connexion['link']; |
|
| 337 | + $db = $connexion['db']; |
|
| 338 | + |
|
| 339 | + $query = 'EXPLAIN ' . _mysql_traite_query($query, $db, $prefixe); |
|
| 340 | + $r = mysqli_query($link, $query); |
|
| 341 | + |
|
| 342 | + return spip_mysql_fetch($r, null, $serveur); |
|
| 343 | 343 | } |
| 344 | 344 | |
| 345 | 345 | |
@@ -368,35 +368,35 @@ discard block |
||
| 368 | 368 | * - array : Tableau décrivant requête et temps d'exécution si var_profile actif pour tracer. |
| 369 | 369 | */ |
| 370 | 370 | function spip_mysql_select( |
| 371 | - $select, |
|
| 372 | - $from, |
|
| 373 | - $where = '', |
|
| 374 | - $groupby = '', |
|
| 375 | - $orderby = '', |
|
| 376 | - $limit = '', |
|
| 377 | - $having = '', |
|
| 378 | - $serveur = '', |
|
| 379 | - $requeter = true |
|
| 371 | + $select, |
|
| 372 | + $from, |
|
| 373 | + $where = '', |
|
| 374 | + $groupby = '', |
|
| 375 | + $orderby = '', |
|
| 376 | + $limit = '', |
|
| 377 | + $having = '', |
|
| 378 | + $serveur = '', |
|
| 379 | + $requeter = true |
|
| 380 | 380 | ) { |
| 381 | 381 | |
| 382 | 382 | |
| 383 | - $from = (!is_array($from) ? $from : spip_mysql_select_as($from)); |
|
| 384 | - $query = |
|
| 385 | - calculer_mysql_expression('SELECT', $select, ', ') |
|
| 386 | - . calculer_mysql_expression('FROM', $from, ', ') |
|
| 387 | - . calculer_mysql_expression('WHERE', $where) |
|
| 388 | - . calculer_mysql_expression('GROUP BY', $groupby, ',') |
|
| 389 | - . calculer_mysql_expression('HAVING', $having) |
|
| 390 | - . ($orderby ? ("\nORDER BY " . spip_mysql_order($orderby)) : '') |
|
| 391 | - . ($limit ? "\nLIMIT $limit" : ''); |
|
| 383 | + $from = (!is_array($from) ? $from : spip_mysql_select_as($from)); |
|
| 384 | + $query = |
|
| 385 | + calculer_mysql_expression('SELECT', $select, ', ') |
|
| 386 | + . calculer_mysql_expression('FROM', $from, ', ') |
|
| 387 | + . calculer_mysql_expression('WHERE', $where) |
|
| 388 | + . calculer_mysql_expression('GROUP BY', $groupby, ',') |
|
| 389 | + . calculer_mysql_expression('HAVING', $having) |
|
| 390 | + . ($orderby ? ("\nORDER BY " . spip_mysql_order($orderby)) : '') |
|
| 391 | + . ($limit ? "\nLIMIT $limit" : ''); |
|
| 392 | 392 | |
| 393 | - // renvoyer la requete inerte si demandee |
|
| 394 | - if ($requeter === false) { |
|
| 395 | - return $query; |
|
| 396 | - } |
|
| 397 | - $r = spip_mysql_query($query, $serveur, $requeter); |
|
| 393 | + // renvoyer la requete inerte si demandee |
|
| 394 | + if ($requeter === false) { |
|
| 395 | + return $query; |
|
| 396 | + } |
|
| 397 | + $r = spip_mysql_query($query, $serveur, $requeter); |
|
| 398 | 398 | |
| 399 | - return $r ?: $query; |
|
| 399 | + return $r ?: $query; |
|
| 400 | 400 | } |
| 401 | 401 | |
| 402 | 402 | |
@@ -413,7 +413,7 @@ discard block |
||
| 413 | 413 | * @return string texte du orderby préparé |
| 414 | 414 | */ |
| 415 | 415 | function spip_mysql_order($orderby) { |
| 416 | - return (is_array($orderby)) ? join(', ', $orderby) : $orderby; |
|
| 416 | + return (is_array($orderby)) ? join(', ', $orderby) : $orderby; |
|
| 417 | 417 | } |
| 418 | 418 | |
| 419 | 419 | |
@@ -436,26 +436,26 @@ discard block |
||
| 436 | 436 | * Contrainte pour clause WHERE |
| 437 | 437 | */ |
| 438 | 438 | function calculer_mysql_where($v) { |
| 439 | - if (!is_array($v)) { |
|
| 440 | - return $v; |
|
| 441 | - } |
|
| 442 | - |
|
| 443 | - $op = array_shift($v); |
|
| 444 | - if (!($n = count($v))) { |
|
| 445 | - return $op; |
|
| 446 | - } else { |
|
| 447 | - $arg = calculer_mysql_where(array_shift($v)); |
|
| 448 | - if ($n == 1) { |
|
| 449 | - return "$op($arg)"; |
|
| 450 | - } else { |
|
| 451 | - $arg2 = calculer_mysql_where(array_shift($v)); |
|
| 452 | - if ($n == 2) { |
|
| 453 | - return "($arg $op $arg2)"; |
|
| 454 | - } else { |
|
| 455 | - return "($arg $op ($arg2) : $v[0])"; |
|
| 456 | - } |
|
| 457 | - } |
|
| 458 | - } |
|
| 439 | + if (!is_array($v)) { |
|
| 440 | + return $v; |
|
| 441 | + } |
|
| 442 | + |
|
| 443 | + $op = array_shift($v); |
|
| 444 | + if (!($n = count($v))) { |
|
| 445 | + return $op; |
|
| 446 | + } else { |
|
| 447 | + $arg = calculer_mysql_where(array_shift($v)); |
|
| 448 | + if ($n == 1) { |
|
| 449 | + return "$op($arg)"; |
|
| 450 | + } else { |
|
| 451 | + $arg2 = calculer_mysql_where(array_shift($v)); |
|
| 452 | + if ($n == 2) { |
|
| 453 | + return "($arg $op $arg2)"; |
|
| 454 | + } else { |
|
| 455 | + return "($arg $op ($arg2) : $v[0])"; |
|
| 456 | + } |
|
| 457 | + } |
|
| 458 | + } |
|
| 459 | 459 | } |
| 460 | 460 | |
| 461 | 461 | /** |
@@ -470,21 +470,21 @@ discard block |
||
| 470 | 470 | * @return string texte de l'expression, une partie donc, du texte la requête. |
| 471 | 471 | */ |
| 472 | 472 | function calculer_mysql_expression($expression, $v, $join = 'AND') { |
| 473 | - if (empty($v)) { |
|
| 474 | - return ''; |
|
| 475 | - } |
|
| 476 | - |
|
| 477 | - $exp = "\n$expression "; |
|
| 478 | - |
|
| 479 | - if (!is_array($v)) { |
|
| 480 | - return $exp . $v; |
|
| 481 | - } else { |
|
| 482 | - if (strtoupper($join) === 'AND') { |
|
| 483 | - return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v)); |
|
| 484 | - } else { |
|
| 485 | - return $exp . join($join, $v); |
|
| 486 | - } |
|
| 487 | - } |
|
| 473 | + if (empty($v)) { |
|
| 474 | + return ''; |
|
| 475 | + } |
|
| 476 | + |
|
| 477 | + $exp = "\n$expression "; |
|
| 478 | + |
|
| 479 | + if (!is_array($v)) { |
|
| 480 | + return $exp . $v; |
|
| 481 | + } else { |
|
| 482 | + if (strtoupper($join) === 'AND') { |
|
| 483 | + return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v)); |
|
| 484 | + } else { |
|
| 485 | + return $exp . join($join, $v); |
|
| 486 | + } |
|
| 487 | + } |
|
| 488 | 488 | } |
| 489 | 489 | |
| 490 | 490 | |
@@ -495,26 +495,26 @@ discard block |
||
| 495 | 495 | * @return string Sélection de colonnes pour une clause SELECT |
| 496 | 496 | */ |
| 497 | 497 | function spip_mysql_select_as($args) { |
| 498 | - $res = ''; |
|
| 499 | - foreach ($args as $k => $v) { |
|
| 500 | - if (substr($k, -1) == '@') { |
|
| 501 | - // c'est une jointure qui se refere au from precedent |
|
| 502 | - // pas de virgule |
|
| 503 | - $res .= ' ' . $v; |
|
| 504 | - } else { |
|
| 505 | - if (!is_numeric($k)) { |
|
| 506 | - $p = strpos($v, ' '); |
|
| 507 | - if ($p) { |
|
| 508 | - $v = substr($v, 0, $p) . " AS `$k`" . substr($v, $p); |
|
| 509 | - } else { |
|
| 510 | - $v .= " AS `$k`"; |
|
| 511 | - } |
|
| 512 | - } |
|
| 513 | - $res .= ', ' . $v; |
|
| 514 | - } |
|
| 515 | - } |
|
| 516 | - |
|
| 517 | - return substr($res, 2); |
|
| 498 | + $res = ''; |
|
| 499 | + foreach ($args as $k => $v) { |
|
| 500 | + if (substr($k, -1) == '@') { |
|
| 501 | + // c'est une jointure qui se refere au from precedent |
|
| 502 | + // pas de virgule |
|
| 503 | + $res .= ' ' . $v; |
|
| 504 | + } else { |
|
| 505 | + if (!is_numeric($k)) { |
|
| 506 | + $p = strpos($v, ' '); |
|
| 507 | + if ($p) { |
|
| 508 | + $v = substr($v, 0, $p) . " AS `$k`" . substr($v, $p); |
|
| 509 | + } else { |
|
| 510 | + $v .= " AS `$k`"; |
|
| 511 | + } |
|
| 512 | + } |
|
| 513 | + $res .= ', ' . $v; |
|
| 514 | + } |
|
| 515 | + } |
|
| 516 | + |
|
| 517 | + return substr($res, 2); |
|
| 518 | 518 | } |
| 519 | 519 | |
| 520 | 520 | |
@@ -539,58 +539,58 @@ discard block |
||
| 539 | 539 | */ |
| 540 | 540 | function _mysql_traite_query($query, $db = '', $prefixe = '', $echappe_textes = true) { |
| 541 | 541 | |
| 542 | - if ($GLOBALS['mysql_rappel_nom_base'] and $db) { |
|
| 543 | - $pref = '`' . $db . '`.'; |
|
| 544 | - } else { |
|
| 545 | - $pref = ''; |
|
| 546 | - } |
|
| 547 | - |
|
| 548 | - if ($prefixe) { |
|
| 549 | - $pref .= $prefixe . '_'; |
|
| 550 | - } |
|
| 551 | - |
|
| 552 | - if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) { |
|
| 553 | - $suite = ''; |
|
| 554 | - } else { |
|
| 555 | - $suite = strstr($query, (string) $regs[0]); |
|
| 556 | - $query = substr($query, 0, -strlen($suite)); |
|
| 557 | - // propager le prefixe en cas de requete imbriquee |
|
| 558 | - // il faut alors echapper les chaine avant de le faire, pour ne pas risquer de |
|
| 559 | - // modifier une requete qui est en fait juste du texte dans un champ |
|
| 560 | - if (stripos($suite, 'SELECT') !== false) { |
|
| 561 | - if ($echappe_textes) { |
|
| 562 | - [$suite_echap, $textes] = query_echappe_textes($suite); |
|
| 563 | - } |
|
| 564 | - else { |
|
| 565 | - $suite_echap = $suite; |
|
| 566 | - } |
|
| 567 | - if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite_echap, $r)) { |
|
| 568 | - $suite_echap = $r[1] . _mysql_traite_query($r[2], $db, $prefixe, false); |
|
| 569 | - if ($echappe_textes) { |
|
| 570 | - $suite = query_reinjecte_textes($suite_echap, $textes); |
|
| 571 | - } |
|
| 572 | - else { |
|
| 573 | - $suite = $suite_echap; |
|
| 574 | - } |
|
| 575 | - } |
|
| 576 | - } |
|
| 577 | - } |
|
| 578 | - $r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1' . $pref, $query) . $suite; |
|
| 579 | - |
|
| 580 | - // en option, remplacer les emoji (que mysql ne sait pas gérer) en 💩 |
|
| 581 | - // remplacer les emoji (que mysql ne sait pas gérer) en 💩 |
|
| 582 | - if ( |
|
| 583 | - defined('_MYSQL_NOPLANES') |
|
| 584 | - and _MYSQL_NOPLANES |
|
| 585 | - and !empty($GLOBALS['meta']['charset_sql_connexion']) |
|
| 586 | - and $GLOBALS['meta']['charset_sql_connexion'] == 'utf8' |
|
| 587 | - ) { |
|
| 588 | - include_spip('inc/charsets'); |
|
| 589 | - $r = utf8_noplanes($r); |
|
| 590 | - } |
|
| 591 | - |
|
| 592 | - #spip_log("_mysql_traite_query: " . substr($r,0, 50) . ".... $db, $prefixe", _LOG_DEBUG); |
|
| 593 | - return $r; |
|
| 542 | + if ($GLOBALS['mysql_rappel_nom_base'] and $db) { |
|
| 543 | + $pref = '`' . $db . '`.'; |
|
| 544 | + } else { |
|
| 545 | + $pref = ''; |
|
| 546 | + } |
|
| 547 | + |
|
| 548 | + if ($prefixe) { |
|
| 549 | + $pref .= $prefixe . '_'; |
|
| 550 | + } |
|
| 551 | + |
|
| 552 | + if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) { |
|
| 553 | + $suite = ''; |
|
| 554 | + } else { |
|
| 555 | + $suite = strstr($query, (string) $regs[0]); |
|
| 556 | + $query = substr($query, 0, -strlen($suite)); |
|
| 557 | + // propager le prefixe en cas de requete imbriquee |
|
| 558 | + // il faut alors echapper les chaine avant de le faire, pour ne pas risquer de |
|
| 559 | + // modifier une requete qui est en fait juste du texte dans un champ |
|
| 560 | + if (stripos($suite, 'SELECT') !== false) { |
|
| 561 | + if ($echappe_textes) { |
|
| 562 | + [$suite_echap, $textes] = query_echappe_textes($suite); |
|
| 563 | + } |
|
| 564 | + else { |
|
| 565 | + $suite_echap = $suite; |
|
| 566 | + } |
|
| 567 | + if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite_echap, $r)) { |
|
| 568 | + $suite_echap = $r[1] . _mysql_traite_query($r[2], $db, $prefixe, false); |
|
| 569 | + if ($echappe_textes) { |
|
| 570 | + $suite = query_reinjecte_textes($suite_echap, $textes); |
|
| 571 | + } |
|
| 572 | + else { |
|
| 573 | + $suite = $suite_echap; |
|
| 574 | + } |
|
| 575 | + } |
|
| 576 | + } |
|
| 577 | + } |
|
| 578 | + $r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1' . $pref, $query) . $suite; |
|
| 579 | + |
|
| 580 | + // en option, remplacer les emoji (que mysql ne sait pas gérer) en 💩 |
|
| 581 | + // remplacer les emoji (que mysql ne sait pas gérer) en 💩 |
|
| 582 | + if ( |
|
| 583 | + defined('_MYSQL_NOPLANES') |
|
| 584 | + and _MYSQL_NOPLANES |
|
| 585 | + and !empty($GLOBALS['meta']['charset_sql_connexion']) |
|
| 586 | + and $GLOBALS['meta']['charset_sql_connexion'] == 'utf8' |
|
| 587 | + ) { |
|
| 588 | + include_spip('inc/charsets'); |
|
| 589 | + $r = utf8_noplanes($r); |
|
| 590 | + } |
|
| 591 | + |
|
| 592 | + #spip_log("_mysql_traite_query: " . substr($r,0, 50) . ".... $db, $prefixe", _LOG_DEBUG); |
|
| 593 | + return $r; |
|
| 594 | 594 | } |
| 595 | 595 | |
| 596 | 596 | /** |
@@ -608,17 +608,17 @@ discard block |
||
| 608 | 608 | * - False en cas d'erreur. |
| 609 | 609 | **/ |
| 610 | 610 | function spip_mysql_selectdb($db, $serveur = '', $requeter = true) { |
| 611 | - $link = _mysql_link($serveur); |
|
| 612 | - try { |
|
| 613 | - $ok = mysqli_select_db($link, $db); |
|
| 614 | - } catch (\mysqli_sql_exception $e) { |
|
| 615 | - $ok = false; |
|
| 616 | - } |
|
| 617 | - if (!$ok) { |
|
| 618 | - spip_log('Echec mysqli_selectdb. Erreur : ' . mysqli_error($link), 'mysql.' . _LOG_CRITIQUE); |
|
| 619 | - } |
|
| 620 | - |
|
| 621 | - return $ok; |
|
| 611 | + $link = _mysql_link($serveur); |
|
| 612 | + try { |
|
| 613 | + $ok = mysqli_select_db($link, $db); |
|
| 614 | + } catch (\mysqli_sql_exception $e) { |
|
| 615 | + $ok = false; |
|
| 616 | + } |
|
| 617 | + if (!$ok) { |
|
| 618 | + spip_log('Echec mysqli_selectdb. Erreur : ' . mysqli_error($link), 'mysql.' . _LOG_CRITIQUE); |
|
| 619 | + } |
|
| 620 | + |
|
| 621 | + return $ok; |
|
| 622 | 622 | } |
| 623 | 623 | |
| 624 | 624 | |
@@ -639,14 +639,14 @@ discard block |
||
| 639 | 639 | * Liste de noms de bases de données |
| 640 | 640 | **/ |
| 641 | 641 | function spip_mysql_listdbs($serveur = '', $requeter = true) { |
| 642 | - $dbs = []; |
|
| 643 | - if ($res = spip_mysql_query('SHOW DATABASES', $serveur)) { |
|
| 644 | - while ($row = mysqli_fetch_assoc($res)) { |
|
| 645 | - $dbs[] = $row['Database']; |
|
| 646 | - } |
|
| 647 | - } |
|
| 648 | - |
|
| 649 | - return $dbs; |
|
| 642 | + $dbs = []; |
|
| 643 | + if ($res = spip_mysql_query('SHOW DATABASES', $serveur)) { |
|
| 644 | + while ($row = mysqli_fetch_assoc($res)) { |
|
| 645 | + $dbs[] = $row['Database']; |
|
| 646 | + } |
|
| 647 | + } |
|
| 648 | + |
|
| 649 | + return $dbs; |
|
| 650 | 650 | } |
| 651 | 651 | |
| 652 | 652 | |
@@ -669,73 +669,73 @@ discard block |
||
| 669 | 669 | * - true si la requête réussie, false sinon. |
| 670 | 670 | */ |
| 671 | 671 | function spip_mysql_create( |
| 672 | - $nom, |
|
| 673 | - $champs, |
|
| 674 | - $cles, |
|
| 675 | - $autoinc = false, |
|
| 676 | - $temporary = false, |
|
| 677 | - $serveur = '', |
|
| 678 | - $requeter = true |
|
| 672 | + $nom, |
|
| 673 | + $champs, |
|
| 674 | + $cles, |
|
| 675 | + $autoinc = false, |
|
| 676 | + $temporary = false, |
|
| 677 | + $serveur = '', |
|
| 678 | + $requeter = true |
|
| 679 | 679 | ) { |
| 680 | 680 | |
| 681 | - $query = ''; |
|
| 682 | - $keys = ''; |
|
| 683 | - $s = ''; |
|
| 684 | - $p = ''; |
|
| 685 | - |
|
| 686 | - // certains plugins declarent les tables (permet leur inclusion dans le dump) |
|
| 687 | - // sans les renseigner (laisse le compilo recuperer la description) |
|
| 688 | - if (!is_array($champs) || !is_array($cles)) { |
|
| 689 | - return; |
|
| 690 | - } |
|
| 691 | - |
|
| 692 | - $res = spip_mysql_query('SELECT version() as v', $serveur); |
|
| 693 | - if (($row = mysqli_fetch_array($res)) && (version_compare($row['v'], '5.0', '>='))) { |
|
| 694 | - spip_mysql_query("SET sql_mode=''", $serveur); |
|
| 695 | - } |
|
| 696 | - |
|
| 697 | - foreach ($cles as $k => $v) { |
|
| 698 | - $keys .= "$s\n\t\t$k ($v)"; |
|
| 699 | - if ($k == 'PRIMARY KEY') { |
|
| 700 | - $p = $v; |
|
| 701 | - } |
|
| 702 | - $s = ','; |
|
| 703 | - } |
|
| 704 | - $s = ''; |
|
| 705 | - |
|
| 706 | - $character_set = ''; |
|
| 707 | - if (@$GLOBALS['meta']['charset_sql_base']) { |
|
| 708 | - $character_set .= ' CHARACTER SET ' . $GLOBALS['meta']['charset_sql_base']; |
|
| 709 | - } |
|
| 710 | - if (@$GLOBALS['meta']['charset_collation_sql_base']) { |
|
| 711 | - $character_set .= ' COLLATE ' . $GLOBALS['meta']['charset_collation_sql_base']; |
|
| 712 | - } |
|
| 713 | - |
|
| 714 | - foreach ($champs as $k => $v) { |
|
| 715 | - $v = _mysql_remplacements_definitions_table($v); |
|
| 716 | - if (preg_match(',([a-z]*\s*(\(\s*[0-9]*\s*\))?(\s*binary)?),i', $v, $defs)) { |
|
| 717 | - if ( |
|
| 718 | - preg_match(',(char|text),i', $defs[1]) |
|
| 719 | - and !preg_match(',(binary|CHARACTER|COLLATE),i', $v) |
|
| 720 | - ) { |
|
| 721 | - $v = $defs[1] . $character_set . ' ' . substr($v, strlen($defs[1])); |
|
| 722 | - } |
|
| 723 | - } |
|
| 724 | - |
|
| 725 | - $query .= "$s\n\t\t$k $v" |
|
| 726 | - . (($autoinc && ($p == $k) && preg_match(',\b(big|small|medium)?int\b,i', $v)) |
|
| 727 | - ? ' auto_increment' |
|
| 728 | - : '' |
|
| 729 | - ); |
|
| 730 | - $s = ','; |
|
| 731 | - } |
|
| 732 | - $temporary = $temporary ? 'TEMPORARY' : ''; |
|
| 733 | - $q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query" . ($keys ? ",$keys" : '') . ')' |
|
| 734 | - . (defined('_MYSQL_ENGINE') ? ' ENGINE=' . _MYSQL_ENGINE : '') |
|
| 735 | - . ($character_set ? " DEFAULT $character_set" : '') |
|
| 736 | - . "\n"; |
|
| 737 | - |
|
| 738 | - return spip_mysql_query($q, $serveur); |
|
| 681 | + $query = ''; |
|
| 682 | + $keys = ''; |
|
| 683 | + $s = ''; |
|
| 684 | + $p = ''; |
|
| 685 | + |
|
| 686 | + // certains plugins declarent les tables (permet leur inclusion dans le dump) |
|
| 687 | + // sans les renseigner (laisse le compilo recuperer la description) |
|
| 688 | + if (!is_array($champs) || !is_array($cles)) { |
|
| 689 | + return; |
|
| 690 | + } |
|
| 691 | + |
|
| 692 | + $res = spip_mysql_query('SELECT version() as v', $serveur); |
|
| 693 | + if (($row = mysqli_fetch_array($res)) && (version_compare($row['v'], '5.0', '>='))) { |
|
| 694 | + spip_mysql_query("SET sql_mode=''", $serveur); |
|
| 695 | + } |
|
| 696 | + |
|
| 697 | + foreach ($cles as $k => $v) { |
|
| 698 | + $keys .= "$s\n\t\t$k ($v)"; |
|
| 699 | + if ($k == 'PRIMARY KEY') { |
|
| 700 | + $p = $v; |
|
| 701 | + } |
|
| 702 | + $s = ','; |
|
| 703 | + } |
|
| 704 | + $s = ''; |
|
| 705 | + |
|
| 706 | + $character_set = ''; |
|
| 707 | + if (@$GLOBALS['meta']['charset_sql_base']) { |
|
| 708 | + $character_set .= ' CHARACTER SET ' . $GLOBALS['meta']['charset_sql_base']; |
|
| 709 | + } |
|
| 710 | + if (@$GLOBALS['meta']['charset_collation_sql_base']) { |
|
| 711 | + $character_set .= ' COLLATE ' . $GLOBALS['meta']['charset_collation_sql_base']; |
|
| 712 | + } |
|
| 713 | + |
|
| 714 | + foreach ($champs as $k => $v) { |
|
| 715 | + $v = _mysql_remplacements_definitions_table($v); |
|
| 716 | + if (preg_match(',([a-z]*\s*(\(\s*[0-9]*\s*\))?(\s*binary)?),i', $v, $defs)) { |
|
| 717 | + if ( |
|
| 718 | + preg_match(',(char|text),i', $defs[1]) |
|
| 719 | + and !preg_match(',(binary|CHARACTER|COLLATE),i', $v) |
|
| 720 | + ) { |
|
| 721 | + $v = $defs[1] . $character_set . ' ' . substr($v, strlen($defs[1])); |
|
| 722 | + } |
|
| 723 | + } |
|
| 724 | + |
|
| 725 | + $query .= "$s\n\t\t$k $v" |
|
| 726 | + . (($autoinc && ($p == $k) && preg_match(',\b(big|small|medium)?int\b,i', $v)) |
|
| 727 | + ? ' auto_increment' |
|
| 728 | + : '' |
|
| 729 | + ); |
|
| 730 | + $s = ','; |
|
| 731 | + } |
|
| 732 | + $temporary = $temporary ? 'TEMPORARY' : ''; |
|
| 733 | + $q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query" . ($keys ? ",$keys" : '') . ')' |
|
| 734 | + . (defined('_MYSQL_ENGINE') ? ' ENGINE=' . _MYSQL_ENGINE : '') |
|
| 735 | + . ($character_set ? " DEFAULT $character_set" : '') |
|
| 736 | + . "\n"; |
|
| 737 | + |
|
| 738 | + return spip_mysql_query($q, $serveur); |
|
| 739 | 739 | } |
| 740 | 740 | |
| 741 | 741 | |
@@ -748,25 +748,25 @@ discard block |
||
| 748 | 748 | * Définition SQL adaptée pour MySQL d'un champ de table |
| 749 | 749 | */ |
| 750 | 750 | function _mysql_remplacements_definitions_table($query) { |
| 751 | - // quelques remplacements |
|
| 752 | - $num = '(\s*\([0-9]*\))?'; |
|
| 753 | - $enum = '(\s*\([^\)]*\))?'; |
|
| 754 | - |
|
| 755 | - $remplace = [ |
|
| 756 | - '/VARCHAR(\s*[^\s\(])/is' => 'VARCHAR(255)\\1', |
|
| 757 | - '/^TIMESTAMP($| NULL DEFAULT NULL)/is' => 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP', |
|
| 758 | - ]; |
|
| 759 | - |
|
| 760 | - if (is_string($query)) { |
|
| 761 | - $query = preg_replace(array_keys($remplace), $remplace, $query); |
|
| 762 | - } elseif (is_array($query)) { |
|
| 763 | - $keys = array_keys($remplace); |
|
| 764 | - foreach ($query as $k => $q) { |
|
| 765 | - $query[$k] = preg_replace($keys, $remplace, $q); |
|
| 766 | - } |
|
| 767 | - } |
|
| 768 | - |
|
| 769 | - return $query; |
|
| 751 | + // quelques remplacements |
|
| 752 | + $num = '(\s*\([0-9]*\))?'; |
|
| 753 | + $enum = '(\s*\([^\)]*\))?'; |
|
| 754 | + |
|
| 755 | + $remplace = [ |
|
| 756 | + '/VARCHAR(\s*[^\s\(])/is' => 'VARCHAR(255)\\1', |
|
| 757 | + '/^TIMESTAMP($| NULL DEFAULT NULL)/is' => 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP', |
|
| 758 | + ]; |
|
| 759 | + |
|
| 760 | + if (is_string($query)) { |
|
| 761 | + $query = preg_replace(array_keys($remplace), $remplace, $query); |
|
| 762 | + } elseif (is_array($query)) { |
|
| 763 | + $keys = array_keys($remplace); |
|
| 764 | + foreach ($query as $k => $q) { |
|
| 765 | + $query[$k] = preg_replace($keys, $remplace, $q); |
|
| 766 | + } |
|
| 767 | + } |
|
| 768 | + |
|
| 769 | + return $query; |
|
| 770 | 770 | } |
| 771 | 771 | |
| 772 | 772 | |
@@ -779,7 +779,7 @@ discard block |
||
| 779 | 779 | * @return bool true si la base est créee. |
| 780 | 780 | **/ |
| 781 | 781 | function spip_mysql_create_base($nom, $serveur = '', $requeter = true) { |
| 782 | - return spip_mysql_query("CREATE DATABASE `$nom`", $serveur, $requeter); |
|
| 782 | + return spip_mysql_query("CREATE DATABASE `$nom`", $serveur, $requeter); |
|
| 783 | 783 | } |
| 784 | 784 | |
| 785 | 785 | |
@@ -800,19 +800,19 @@ discard block |
||
| 800 | 800 | * - string texte de la requête si $requeter vaut false |
| 801 | 801 | */ |
| 802 | 802 | function spip_mysql_create_view($nom, $query_select, $serveur = '', $requeter = true) { |
| 803 | - if (!$query_select) { |
|
| 804 | - return false; |
|
| 805 | - } |
|
| 806 | - // vue deja presente |
|
| 807 | - if (sql_showtable($nom, false, $serveur)) { |
|
| 808 | - spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", _LOG_ERREUR); |
|
| 803 | + if (!$query_select) { |
|
| 804 | + return false; |
|
| 805 | + } |
|
| 806 | + // vue deja presente |
|
| 807 | + if (sql_showtable($nom, false, $serveur)) { |
|
| 808 | + spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", _LOG_ERREUR); |
|
| 809 | 809 | |
| 810 | - return false; |
|
| 811 | - } |
|
| 810 | + return false; |
|
| 811 | + } |
|
| 812 | 812 | |
| 813 | - $query = "CREATE VIEW $nom AS " . $query_select; |
|
| 813 | + $query = "CREATE VIEW $nom AS " . $query_select; |
|
| 814 | 814 | |
| 815 | - return spip_mysql_query($query, $serveur, $requeter); |
|
| 815 | + return spip_mysql_query($query, $serveur, $requeter); |
|
| 816 | 816 | } |
| 817 | 817 | |
| 818 | 818 | |
@@ -828,11 +828,11 @@ discard block |
||
| 828 | 828 | * - true si la requête a réussie, false sinon |
| 829 | 829 | */ |
| 830 | 830 | function spip_mysql_drop_table($table, $exist = '', $serveur = '', $requeter = true) { |
| 831 | - if ($exist) { |
|
| 832 | - $exist = ' IF EXISTS'; |
|
| 833 | - } |
|
| 831 | + if ($exist) { |
|
| 832 | + $exist = ' IF EXISTS'; |
|
| 833 | + } |
|
| 834 | 834 | |
| 835 | - return spip_mysql_query("DROP TABLE$exist $table", $serveur, $requeter); |
|
| 835 | + return spip_mysql_query("DROP TABLE$exist $table", $serveur, $requeter); |
|
| 836 | 836 | } |
| 837 | 837 | |
| 838 | 838 | /** |
@@ -847,11 +847,11 @@ discard block |
||
| 847 | 847 | * - true si la requête a réussie, false sinon |
| 848 | 848 | */ |
| 849 | 849 | function spip_mysql_drop_view($view, $exist = '', $serveur = '', $requeter = true) { |
| 850 | - if ($exist) { |
|
| 851 | - $exist = ' IF EXISTS'; |
|
| 852 | - } |
|
| 850 | + if ($exist) { |
|
| 851 | + $exist = ' IF EXISTS'; |
|
| 852 | + } |
|
| 853 | 853 | |
| 854 | - return spip_mysql_query("DROP VIEW$exist $view", $serveur, $requeter); |
|
| 854 | + return spip_mysql_query("DROP VIEW$exist $view", $serveur, $requeter); |
|
| 855 | 855 | } |
| 856 | 856 | |
| 857 | 857 | /** |
@@ -868,7 +868,7 @@ discard block |
||
| 868 | 868 | * Ressource à utiliser avec sql_fetch() |
| 869 | 869 | **/ |
| 870 | 870 | function spip_mysql_showbase($match, $serveur = '', $requeter = true) { |
| 871 | - return spip_mysql_query('SHOW TABLES LIKE ' . _q($match), $serveur, $requeter); |
|
| 871 | + return spip_mysql_query('SHOW TABLES LIKE ' . _q($match), $serveur, $requeter); |
|
| 872 | 872 | } |
| 873 | 873 | |
| 874 | 874 | /** |
@@ -884,18 +884,18 @@ discard block |
||
| 884 | 884 | * - true si la requête a réussie, false sinon |
| 885 | 885 | */ |
| 886 | 886 | function spip_mysql_repair($table, $serveur = '', $requeter = true) { |
| 887 | - $table_status = spip_mysql_fetch(spip_mysql_query('SHOW TABLE STATUS WHERE Name = ' . _q($table), $serveur, true)); |
|
| 888 | - $engine = $table_status['Engine']; |
|
| 889 | - if ($engine == 'InnoDB') { |
|
| 890 | - if (spip_mysql_alter("TABLE $table ENGINE = InnoDB", $serveur, $requeter)) { |
|
| 891 | - return [' OK ']; |
|
| 892 | - } |
|
| 893 | - } elseif ($engine == 'MyISAM') { |
|
| 894 | - return spip_mysql_query("REPAIR TABLE `$table`", $serveur, $requeter); |
|
| 895 | - } else { |
|
| 896 | - spip_log("spip_mysql_repair impossible pour la table $table engine $engine", 'mysql.' . _LOG_DEBUG); |
|
| 897 | - } |
|
| 898 | - return false; |
|
| 887 | + $table_status = spip_mysql_fetch(spip_mysql_query('SHOW TABLE STATUS WHERE Name = ' . _q($table), $serveur, true)); |
|
| 888 | + $engine = $table_status['Engine']; |
|
| 889 | + if ($engine == 'InnoDB') { |
|
| 890 | + if (spip_mysql_alter("TABLE $table ENGINE = InnoDB", $serveur, $requeter)) { |
|
| 891 | + return [' OK ']; |
|
| 892 | + } |
|
| 893 | + } elseif ($engine == 'MyISAM') { |
|
| 894 | + return spip_mysql_query("REPAIR TABLE `$table`", $serveur, $requeter); |
|
| 895 | + } else { |
|
| 896 | + spip_log("spip_mysql_repair impossible pour la table $table engine $engine", 'mysql.' . _LOG_DEBUG); |
|
| 897 | + } |
|
| 898 | + return false; |
|
| 899 | 899 | } |
| 900 | 900 | |
| 901 | 901 | /** |
@@ -913,12 +913,12 @@ discard block |
||
| 913 | 913 | * - string : requete sql, si $requeter = true |
| 914 | 914 | **/ |
| 915 | 915 | function spip_mysql_table_exists(string $table, $serveur = '', $requeter = true) { |
| 916 | - $r = spip_mysql_query('SHOW TABLES LIKE ' . _q($table), $serveur, $requeter); |
|
| 917 | - if (!$requeter) { |
|
| 918 | - return $r; |
|
| 919 | - } |
|
| 920 | - $res = spip_mysql_fetch($r); |
|
| 921 | - return (bool) $res; |
|
| 916 | + $r = spip_mysql_query('SHOW TABLES LIKE ' . _q($table), $serveur, $requeter); |
|
| 917 | + if (!$requeter) { |
|
| 918 | + return $r; |
|
| 919 | + } |
|
| 920 | + $res = spip_mysql_fetch($r); |
|
| 921 | + return (bool) $res; |
|
| 922 | 922 | } |
| 923 | 923 | |
| 924 | 924 | define('_MYSQL_RE_SHOW_TABLE', '/^[^(),]*\(((?:[^()]*\((?:[^()]*\([^()]*\))?[^()]*\)[^()]*)*[^()]*)\)[^()]*$/'); |
@@ -941,86 +941,86 @@ discard block |
||
| 941 | 941 | * - array description de la table sinon |
| 942 | 942 | */ |
| 943 | 943 | function spip_mysql_showtable($nom_table, $serveur = '', $requeter = true) { |
| 944 | - $s = spip_mysql_query("SHOW CREATE TABLE `$nom_table`", $serveur, $requeter); |
|
| 945 | - if (!$s) { |
|
| 946 | - return ''; |
|
| 947 | - } |
|
| 948 | - if (!$requeter) { |
|
| 949 | - return $s; |
|
| 950 | - } |
|
| 951 | - |
|
| 952 | - [, $a] = mysqli_fetch_array($s, MYSQLI_NUM); |
|
| 953 | - if (preg_match(_MYSQL_RE_SHOW_TABLE, $a, $r)) { |
|
| 954 | - $desc = $r[1]; |
|
| 955 | - // extraction d'une KEY éventuelle en prenant garde de ne pas |
|
| 956 | - // relever un champ dont le nom contient KEY (ex. ID_WHISKEY) |
|
| 957 | - if (preg_match('/^(.*?),([^,]*\sKEY[ (].*)$/s', $desc, $r)) { |
|
| 958 | - $namedkeys = $r[2]; |
|
| 959 | - $desc = $r[1]; |
|
| 960 | - } else { |
|
| 961 | - $namedkeys = ''; |
|
| 962 | - } |
|
| 963 | - |
|
| 964 | - $fields = []; |
|
| 965 | - foreach (preg_split('/,\s*`/', $desc) as $v) { |
|
| 966 | - preg_match('/^\s*`?([^`]*)`\s*(.*)/', $v, $r); |
|
| 967 | - $fields[strtolower($r[1])] = $r[2]; |
|
| 968 | - } |
|
| 969 | - $keys = []; |
|
| 970 | - |
|
| 971 | - foreach (preg_split('/\)\s*(,|$)/', $namedkeys) as $v) { |
|
| 972 | - if (preg_match('/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/', $v, $r)) { |
|
| 973 | - $k = str_replace('`', '', trim($r[1])); |
|
| 974 | - $t = strtolower(str_replace('`', '', $r[2])); |
|
| 975 | - if ($k && !isset($keys[$k])) { |
|
| 976 | - $keys[$k] = $t; |
|
| 977 | - } else { |
|
| 978 | - $keys[] = $t; |
|
| 979 | - } |
|
| 980 | - } |
|
| 981 | - } |
|
| 982 | - spip_mysql_free($s); |
|
| 983 | - |
|
| 984 | - return ['field' => $fields, 'key' => $keys]; |
|
| 985 | - } |
|
| 986 | - |
|
| 987 | - $res = spip_mysql_query("SHOW COLUMNS FROM `$nom_table`", $serveur); |
|
| 988 | - if ($res) { |
|
| 989 | - $nfields = []; |
|
| 990 | - $nkeys = []; |
|
| 991 | - while ($val = spip_mysql_fetch($res)) { |
|
| 992 | - $nfields[$val['Field']] = $val['Type']; |
|
| 993 | - if ($val['Null'] == 'NO') { |
|
| 994 | - $nfields[$val['Field']] .= ' NOT NULL'; |
|
| 995 | - } |
|
| 996 | - if ($val['Default'] === '0' || $val['Default']) { |
|
| 997 | - if (preg_match('/[A-Z_]/', $val['Default'])) { |
|
| 998 | - $nfields[$val['Field']] .= ' DEFAULT ' . $val['Default']; |
|
| 999 | - } else { |
|
| 1000 | - $nfields[$val['Field']] .= " DEFAULT '" . $val['Default'] . "'"; |
|
| 1001 | - } |
|
| 1002 | - } |
|
| 1003 | - if ($val['Extra']) { |
|
| 1004 | - $nfields[$val['Field']] .= ' ' . $val['Extra']; |
|
| 1005 | - } |
|
| 1006 | - if ($val['Key'] == 'PRI') { |
|
| 1007 | - $nkeys['PRIMARY KEY'] = $val['Field']; |
|
| 1008 | - } else { |
|
| 1009 | - if ($val['Key'] == 'MUL') { |
|
| 1010 | - $nkeys['KEY ' . $val['Field']] = $val['Field']; |
|
| 1011 | - } else { |
|
| 1012 | - if ($val['Key'] == 'UNI') { |
|
| 1013 | - $nkeys['UNIQUE KEY ' . $val['Field']] = $val['Field']; |
|
| 1014 | - } |
|
| 1015 | - } |
|
| 1016 | - } |
|
| 1017 | - } |
|
| 1018 | - spip_mysql_free($res); |
|
| 1019 | - |
|
| 1020 | - return ['field' => $nfields, 'key' => $nkeys]; |
|
| 1021 | - } |
|
| 1022 | - |
|
| 1023 | - return ''; |
|
| 944 | + $s = spip_mysql_query("SHOW CREATE TABLE `$nom_table`", $serveur, $requeter); |
|
| 945 | + if (!$s) { |
|
| 946 | + return ''; |
|
| 947 | + } |
|
| 948 | + if (!$requeter) { |
|
| 949 | + return $s; |
|
| 950 | + } |
|
| 951 | + |
|
| 952 | + [, $a] = mysqli_fetch_array($s, MYSQLI_NUM); |
|
| 953 | + if (preg_match(_MYSQL_RE_SHOW_TABLE, $a, $r)) { |
|
| 954 | + $desc = $r[1]; |
|
| 955 | + // extraction d'une KEY éventuelle en prenant garde de ne pas |
|
| 956 | + // relever un champ dont le nom contient KEY (ex. ID_WHISKEY) |
|
| 957 | + if (preg_match('/^(.*?),([^,]*\sKEY[ (].*)$/s', $desc, $r)) { |
|
| 958 | + $namedkeys = $r[2]; |
|
| 959 | + $desc = $r[1]; |
|
| 960 | + } else { |
|
| 961 | + $namedkeys = ''; |
|
| 962 | + } |
|
| 963 | + |
|
| 964 | + $fields = []; |
|
| 965 | + foreach (preg_split('/,\s*`/', $desc) as $v) { |
|
| 966 | + preg_match('/^\s*`?([^`]*)`\s*(.*)/', $v, $r); |
|
| 967 | + $fields[strtolower($r[1])] = $r[2]; |
|
| 968 | + } |
|
| 969 | + $keys = []; |
|
| 970 | + |
|
| 971 | + foreach (preg_split('/\)\s*(,|$)/', $namedkeys) as $v) { |
|
| 972 | + if (preg_match('/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/', $v, $r)) { |
|
| 973 | + $k = str_replace('`', '', trim($r[1])); |
|
| 974 | + $t = strtolower(str_replace('`', '', $r[2])); |
|
| 975 | + if ($k && !isset($keys[$k])) { |
|
| 976 | + $keys[$k] = $t; |
|
| 977 | + } else { |
|
| 978 | + $keys[] = $t; |
|
| 979 | + } |
|
| 980 | + } |
|
| 981 | + } |
|
| 982 | + spip_mysql_free($s); |
|
| 983 | + |
|
| 984 | + return ['field' => $fields, 'key' => $keys]; |
|
| 985 | + } |
|
| 986 | + |
|
| 987 | + $res = spip_mysql_query("SHOW COLUMNS FROM `$nom_table`", $serveur); |
|
| 988 | + if ($res) { |
|
| 989 | + $nfields = []; |
|
| 990 | + $nkeys = []; |
|
| 991 | + while ($val = spip_mysql_fetch($res)) { |
|
| 992 | + $nfields[$val['Field']] = $val['Type']; |
|
| 993 | + if ($val['Null'] == 'NO') { |
|
| 994 | + $nfields[$val['Field']] .= ' NOT NULL'; |
|
| 995 | + } |
|
| 996 | + if ($val['Default'] === '0' || $val['Default']) { |
|
| 997 | + if (preg_match('/[A-Z_]/', $val['Default'])) { |
|
| 998 | + $nfields[$val['Field']] .= ' DEFAULT ' . $val['Default']; |
|
| 999 | + } else { |
|
| 1000 | + $nfields[$val['Field']] .= " DEFAULT '" . $val['Default'] . "'"; |
|
| 1001 | + } |
|
| 1002 | + } |
|
| 1003 | + if ($val['Extra']) { |
|
| 1004 | + $nfields[$val['Field']] .= ' ' . $val['Extra']; |
|
| 1005 | + } |
|
| 1006 | + if ($val['Key'] == 'PRI') { |
|
| 1007 | + $nkeys['PRIMARY KEY'] = $val['Field']; |
|
| 1008 | + } else { |
|
| 1009 | + if ($val['Key'] == 'MUL') { |
|
| 1010 | + $nkeys['KEY ' . $val['Field']] = $val['Field']; |
|
| 1011 | + } else { |
|
| 1012 | + if ($val['Key'] == 'UNI') { |
|
| 1013 | + $nkeys['UNIQUE KEY ' . $val['Field']] = $val['Field']; |
|
| 1014 | + } |
|
| 1015 | + } |
|
| 1016 | + } |
|
| 1017 | + } |
|
| 1018 | + spip_mysql_free($res); |
|
| 1019 | + |
|
| 1020 | + return ['field' => $nfields, 'key' => $nkeys]; |
|
| 1021 | + } |
|
| 1022 | + |
|
| 1023 | + return ''; |
|
| 1024 | 1024 | } |
| 1025 | 1025 | |
| 1026 | 1026 | |
@@ -1039,13 +1039,13 @@ discard block |
||
| 1039 | 1039 | * - false Erreur |
| 1040 | 1040 | */ |
| 1041 | 1041 | function spip_mysql_fetch($r, $t = '', $serveur = '', $requeter = true) { |
| 1042 | - if (!$t) { |
|
| 1043 | - $t = \MYSQLI_ASSOC; |
|
| 1044 | - } |
|
| 1045 | - if ($r) { |
|
| 1046 | - return mysqli_fetch_array($r, $t); |
|
| 1047 | - } |
|
| 1048 | - return false; |
|
| 1042 | + if (!$t) { |
|
| 1043 | + $t = \MYSQLI_ASSOC; |
|
| 1044 | + } |
|
| 1045 | + if ($r) { |
|
| 1046 | + return mysqli_fetch_array($r, $t); |
|
| 1047 | + } |
|
| 1048 | + return false; |
|
| 1049 | 1049 | } |
| 1050 | 1050 | |
| 1051 | 1051 | /** |
@@ -1058,10 +1058,10 @@ discard block |
||
| 1058 | 1058 | * @return bool True si déplacement réussi, false sinon. |
| 1059 | 1059 | **/ |
| 1060 | 1060 | function spip_mysql_seek($r, $row_number, $serveur = '', $requeter = true) { |
| 1061 | - if ($r and mysqli_num_rows($r)) { |
|
| 1062 | - return mysqli_data_seek($r, $row_number); |
|
| 1063 | - } |
|
| 1064 | - return false; |
|
| 1061 | + if ($r and mysqli_num_rows($r)) { |
|
| 1062 | + return mysqli_data_seek($r, $row_number); |
|
| 1063 | + } |
|
| 1064 | + return false; |
|
| 1065 | 1065 | } |
| 1066 | 1066 | |
| 1067 | 1067 | |
@@ -1079,26 +1079,26 @@ discard block |
||
| 1079 | 1079 | * - int Nombre de lignes (0 si la requête n'a pas réussie) |
| 1080 | 1080 | **/ |
| 1081 | 1081 | function spip_mysql_countsel( |
| 1082 | - $from = [], |
|
| 1083 | - $where = [], |
|
| 1084 | - $groupby = '', |
|
| 1085 | - $having = [], |
|
| 1086 | - $serveur = '', |
|
| 1087 | - $requeter = true |
|
| 1082 | + $from = [], |
|
| 1083 | + $where = [], |
|
| 1084 | + $groupby = '', |
|
| 1085 | + $having = [], |
|
| 1086 | + $serveur = '', |
|
| 1087 | + $requeter = true |
|
| 1088 | 1088 | ) { |
| 1089 | - $c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby))); |
|
| 1090 | - |
|
| 1091 | - $r = spip_mysql_select("COUNT($c)", $from, $where, '', '', '', $having, $serveur, $requeter); |
|
| 1092 | - if (!$requeter) { |
|
| 1093 | - return $r; |
|
| 1094 | - } |
|
| 1095 | - if (!$r instanceof mysqli_result) { |
|
| 1096 | - return 0; |
|
| 1097 | - } |
|
| 1098 | - [$c] = mysqli_fetch_array($r, MYSQLI_NUM); |
|
| 1099 | - mysqli_free_result($r); |
|
| 1100 | - |
|
| 1101 | - return intval($c); |
|
| 1089 | + $c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby))); |
|
| 1090 | + |
|
| 1091 | + $r = spip_mysql_select("COUNT($c)", $from, $where, '', '', '', $having, $serveur, $requeter); |
|
| 1092 | + if (!$requeter) { |
|
| 1093 | + return $r; |
|
| 1094 | + } |
|
| 1095 | + if (!$r instanceof mysqli_result) { |
|
| 1096 | + return 0; |
|
| 1097 | + } |
|
| 1098 | + [$c] = mysqli_fetch_array($r, MYSQLI_NUM); |
|
| 1099 | + mysqli_free_result($r); |
|
| 1100 | + |
|
| 1101 | + return intval($c); |
|
| 1102 | 1102 | } |
| 1103 | 1103 | |
| 1104 | 1104 | |
@@ -1121,16 +1121,16 @@ discard block |
||
| 1121 | 1121 | * Erreur eventuelle |
| 1122 | 1122 | **/ |
| 1123 | 1123 | function spip_mysql_error($query = '', $serveur = '', $requeter = true) { |
| 1124 | - $link = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]['link']; |
|
| 1125 | - $s = mysqli_error($link); |
|
| 1126 | - if ($s) { |
|
| 1127 | - $trace = debug_backtrace(); |
|
| 1128 | - if ($trace[0]['function'] != 'spip_mysql_error') { |
|
| 1129 | - spip_log("$s - $query - " . sql_error_backtrace(), 'mysql.' . _LOG_ERREUR); |
|
| 1130 | - } |
|
| 1131 | - } |
|
| 1132 | - |
|
| 1133 | - return $s; |
|
| 1124 | + $link = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]['link']; |
|
| 1125 | + $s = mysqli_error($link); |
|
| 1126 | + if ($s) { |
|
| 1127 | + $trace = debug_backtrace(); |
|
| 1128 | + if ($trace[0]['function'] != 'spip_mysql_error') { |
|
| 1129 | + spip_log("$s - $query - " . sql_error_backtrace(), 'mysql.' . _LOG_ERREUR); |
|
| 1130 | + } |
|
| 1131 | + } |
|
| 1132 | + |
|
| 1133 | + return $s; |
|
| 1134 | 1134 | } |
| 1135 | 1135 | |
| 1136 | 1136 | |
@@ -1145,18 +1145,18 @@ discard block |
||
| 1145 | 1145 | * 0, pas d'erreur. Autre, numéro de l'erreur. |
| 1146 | 1146 | **/ |
| 1147 | 1147 | function spip_mysql_errno($serveur = '', $requeter = true) { |
| 1148 | - $link = $GLOBALS['connexions'][$serveur ?: 0]['link']; |
|
| 1149 | - $s = mysqli_errno($link); |
|
| 1150 | - // 2006 MySQL server has gone away |
|
| 1151 | - // 2013 Lost connection to MySQL server during query |
|
| 1152 | - if (in_array($s, [2006, 2013])) { |
|
| 1153 | - define('spip_interdire_cache', true); |
|
| 1154 | - } |
|
| 1155 | - if ($s) { |
|
| 1156 | - spip_log("Erreur mysql $s", _LOG_ERREUR); |
|
| 1157 | - } |
|
| 1158 | - |
|
| 1159 | - return $s; |
|
| 1148 | + $link = $GLOBALS['connexions'][$serveur ?: 0]['link']; |
|
| 1149 | + $s = mysqli_errno($link); |
|
| 1150 | + // 2006 MySQL server has gone away |
|
| 1151 | + // 2013 Lost connection to MySQL server during query |
|
| 1152 | + if (in_array($s, [2006, 2013])) { |
|
| 1153 | + define('spip_interdire_cache', true); |
|
| 1154 | + } |
|
| 1155 | + if ($s) { |
|
| 1156 | + spip_log("Erreur mysql $s", _LOG_ERREUR); |
|
| 1157 | + } |
|
| 1158 | + |
|
| 1159 | + return $s; |
|
| 1160 | 1160 | } |
| 1161 | 1161 | |
| 1162 | 1162 | |
@@ -1170,9 +1170,9 @@ discard block |
||
| 1170 | 1170 | * @return int Nombre de lignes |
| 1171 | 1171 | */ |
| 1172 | 1172 | function spip_mysql_count($r, $serveur = '', $requeter = true) { |
| 1173 | - if ($r) { |
|
| 1174 | - return mysqli_num_rows($r); |
|
| 1175 | - } |
|
| 1173 | + if ($r) { |
|
| 1174 | + return mysqli_num_rows($r); |
|
| 1175 | + } |
|
| 1176 | 1176 | } |
| 1177 | 1177 | |
| 1178 | 1178 | |
@@ -1188,11 +1188,11 @@ discard block |
||
| 1188 | 1188 | * @return bool True si réussi |
| 1189 | 1189 | */ |
| 1190 | 1190 | function spip_mysql_free($r, $serveur = '', $requeter = true) { |
| 1191 | - if ($r instanceof mysqli_result) { |
|
| 1192 | - mysqli_free_result($r); |
|
| 1193 | - return true; |
|
| 1194 | - } |
|
| 1195 | - return false; |
|
| 1191 | + if ($r instanceof mysqli_result) { |
|
| 1192 | + mysqli_free_result($r); |
|
| 1193 | + return true; |
|
| 1194 | + } |
|
| 1195 | + return false; |
|
| 1196 | 1196 | } |
| 1197 | 1197 | |
| 1198 | 1198 | |
@@ -1220,59 +1220,59 @@ discard block |
||
| 1220 | 1220 | **/ |
| 1221 | 1221 | function spip_mysql_insert($table, $champs, $valeurs, $desc = [], $serveur = '', $requeter = true) { |
| 1222 | 1222 | |
| 1223 | - $e = null; |
|
| 1224 | - $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]; |
|
| 1225 | - $link = $connexion['link']; |
|
| 1226 | - $table = prefixer_table_spip($table, $connexion['prefixe']); |
|
| 1227 | - |
|
| 1228 | - // remplacer les emoji (que mysql ne sait pas gérer) en 💩 |
|
| 1229 | - if ( |
|
| 1230 | - defined('_MYSQL_NOPLANES') |
|
| 1231 | - and _MYSQL_NOPLANES |
|
| 1232 | - and !empty($GLOBALS['meta']['charset_sql_connexion']) |
|
| 1233 | - and $GLOBALS['meta']['charset_sql_connexion'] == 'utf8' |
|
| 1234 | - ) { |
|
| 1235 | - include_spip('inc/charsets'); |
|
| 1236 | - $valeurs = utf8_noplanes($valeurs); |
|
| 1237 | - } |
|
| 1238 | - |
|
| 1239 | - $query = "INSERT INTO $table $champs VALUES $valeurs"; |
|
| 1240 | - if (!$requeter) { |
|
| 1241 | - return $query; |
|
| 1242 | - } |
|
| 1243 | - |
|
| 1244 | - if (isset($_GET['var_profile'])) { |
|
| 1245 | - include_spip('public/tracer'); |
|
| 1246 | - $t = trace_query_start(); |
|
| 1247 | - $e = ''; |
|
| 1248 | - } else { |
|
| 1249 | - $t = 0; |
|
| 1250 | - } |
|
| 1251 | - |
|
| 1252 | - $connexion['last'] = $query; |
|
| 1253 | - #spip_log($query, 'mysql.'._LOG_DEBUG); |
|
| 1254 | - $r = false; |
|
| 1255 | - $insert = false; |
|
| 1256 | - try { |
|
| 1257 | - $insert = mysqli_query($link, $query); |
|
| 1258 | - } catch (\mysqli_sql_exception $e) { |
|
| 1259 | - spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG); |
|
| 1260 | - // TODO: utiliser l’exception ensuite plutôt que les appels à spip_mysql_errno() |
|
| 1261 | - // mais il faut pour php < 8.1 forcer les exeptions via mysqli_report(). |
|
| 1262 | - } |
|
| 1263 | - if ($insert) { |
|
| 1264 | - $r = mysqli_insert_id($link); |
|
| 1265 | - } else { |
|
| 1266 | - // Log de l'erreur eventuelle |
|
| 1267 | - if ($e = spip_mysql_errno($serveur)) { |
|
| 1268 | - // et du fautif |
|
| 1269 | - $e .= spip_mysql_error($query, $serveur); |
|
| 1270 | - } |
|
| 1271 | - } |
|
| 1272 | - |
|
| 1273 | - return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r; |
|
| 1274 | - |
|
| 1275 | - // return $r ? $r : (($r===0) ? -1 : 0); pb avec le multi-base. |
|
| 1223 | + $e = null; |
|
| 1224 | + $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]; |
|
| 1225 | + $link = $connexion['link']; |
|
| 1226 | + $table = prefixer_table_spip($table, $connexion['prefixe']); |
|
| 1227 | + |
|
| 1228 | + // remplacer les emoji (que mysql ne sait pas gérer) en 💩 |
|
| 1229 | + if ( |
|
| 1230 | + defined('_MYSQL_NOPLANES') |
|
| 1231 | + and _MYSQL_NOPLANES |
|
| 1232 | + and !empty($GLOBALS['meta']['charset_sql_connexion']) |
|
| 1233 | + and $GLOBALS['meta']['charset_sql_connexion'] == 'utf8' |
|
| 1234 | + ) { |
|
| 1235 | + include_spip('inc/charsets'); |
|
| 1236 | + $valeurs = utf8_noplanes($valeurs); |
|
| 1237 | + } |
|
| 1238 | + |
|
| 1239 | + $query = "INSERT INTO $table $champs VALUES $valeurs"; |
|
| 1240 | + if (!$requeter) { |
|
| 1241 | + return $query; |
|
| 1242 | + } |
|
| 1243 | + |
|
| 1244 | + if (isset($_GET['var_profile'])) { |
|
| 1245 | + include_spip('public/tracer'); |
|
| 1246 | + $t = trace_query_start(); |
|
| 1247 | + $e = ''; |
|
| 1248 | + } else { |
|
| 1249 | + $t = 0; |
|
| 1250 | + } |
|
| 1251 | + |
|
| 1252 | + $connexion['last'] = $query; |
|
| 1253 | + #spip_log($query, 'mysql.'._LOG_DEBUG); |
|
| 1254 | + $r = false; |
|
| 1255 | + $insert = false; |
|
| 1256 | + try { |
|
| 1257 | + $insert = mysqli_query($link, $query); |
|
| 1258 | + } catch (\mysqli_sql_exception $e) { |
|
| 1259 | + spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG); |
|
| 1260 | + // TODO: utiliser l’exception ensuite plutôt que les appels à spip_mysql_errno() |
|
| 1261 | + // mais il faut pour php < 8.1 forcer les exeptions via mysqli_report(). |
|
| 1262 | + } |
|
| 1263 | + if ($insert) { |
|
| 1264 | + $r = mysqli_insert_id($link); |
|
| 1265 | + } else { |
|
| 1266 | + // Log de l'erreur eventuelle |
|
| 1267 | + if ($e = spip_mysql_errno($serveur)) { |
|
| 1268 | + // et du fautif |
|
| 1269 | + $e .= spip_mysql_error($query, $serveur); |
|
| 1270 | + } |
|
| 1271 | + } |
|
| 1272 | + |
|
| 1273 | + return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r; |
|
| 1274 | + |
|
| 1275 | + // return $r ? $r : (($r===0) ? -1 : 0); pb avec le multi-base. |
|
| 1276 | 1276 | } |
| 1277 | 1277 | |
| 1278 | 1278 | /** |
@@ -1297,26 +1297,26 @@ discard block |
||
| 1297 | 1297 | **/ |
| 1298 | 1298 | function spip_mysql_insertq($table, $couples = [], $desc = [], $serveur = '', $requeter = true) { |
| 1299 | 1299 | |
| 1300 | - if (!$desc) { |
|
| 1301 | - $desc = description_table($table, $serveur); |
|
| 1302 | - } |
|
| 1303 | - if (!$desc) { |
|
| 1304 | - $couples = []; |
|
| 1305 | - } |
|
| 1306 | - $fields = $desc['field'] ?? []; |
|
| 1307 | - |
|
| 1308 | - foreach ($couples as $champ => $val) { |
|
| 1309 | - $couples[$champ] = spip_mysql_cite($val, $fields[$champ]); |
|
| 1310 | - } |
|
| 1311 | - |
|
| 1312 | - return spip_mysql_insert( |
|
| 1313 | - $table, |
|
| 1314 | - '(' . join(',', array_keys($couples)) . ')', |
|
| 1315 | - '(' . join(',', $couples) . ')', |
|
| 1316 | - $desc, |
|
| 1317 | - $serveur, |
|
| 1318 | - $requeter |
|
| 1319 | - ); |
|
| 1300 | + if (!$desc) { |
|
| 1301 | + $desc = description_table($table, $serveur); |
|
| 1302 | + } |
|
| 1303 | + if (!$desc) { |
|
| 1304 | + $couples = []; |
|
| 1305 | + } |
|
| 1306 | + $fields = $desc['field'] ?? []; |
|
| 1307 | + |
|
| 1308 | + foreach ($couples as $champ => $val) { |
|
| 1309 | + $couples[$champ] = spip_mysql_cite($val, $fields[$champ]); |
|
| 1310 | + } |
|
| 1311 | + |
|
| 1312 | + return spip_mysql_insert( |
|
| 1313 | + $table, |
|
| 1314 | + '(' . join(',', array_keys($couples)) . ')', |
|
| 1315 | + '(' . join(',', $couples) . ')', |
|
| 1316 | + $desc, |
|
| 1317 | + $serveur, |
|
| 1318 | + $requeter |
|
| 1319 | + ); |
|
| 1320 | 1320 | } |
| 1321 | 1321 | |
| 1322 | 1322 | |
@@ -1341,34 +1341,34 @@ discard block |
||
| 1341 | 1341 | **/ |
| 1342 | 1342 | function spip_mysql_insertq_multi($table, $tab_couples = [], $desc = [], $serveur = '', $requeter = true) { |
| 1343 | 1343 | |
| 1344 | - if (!$desc) { |
|
| 1345 | - $desc = description_table($table, $serveur); |
|
| 1346 | - } |
|
| 1347 | - if (!$desc) { |
|
| 1348 | - $tab_couples = []; |
|
| 1349 | - } |
|
| 1350 | - $fields = $desc['field'] ?? []; |
|
| 1351 | - |
|
| 1352 | - $cles = '(' . join(',', array_keys(reset($tab_couples))) . ')'; |
|
| 1353 | - $valeurs = []; |
|
| 1354 | - $r = false; |
|
| 1355 | - |
|
| 1356 | - // Quoter et Inserer par groupes de 100 max pour eviter un debordement de pile |
|
| 1357 | - foreach ($tab_couples as $couples) { |
|
| 1358 | - foreach ($couples as $champ => $val) { |
|
| 1359 | - $couples[$champ] = spip_mysql_cite($val, $fields[$champ]); |
|
| 1360 | - } |
|
| 1361 | - $valeurs[] = '(' . join(',', $couples) . ')'; |
|
| 1362 | - if (count($valeurs) >= 100) { |
|
| 1363 | - $r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter); |
|
| 1364 | - $valeurs = []; |
|
| 1365 | - } |
|
| 1366 | - } |
|
| 1367 | - if (count($valeurs)) { |
|
| 1368 | - $r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter); |
|
| 1369 | - } |
|
| 1370 | - |
|
| 1371 | - return $r; // dans le cas d'une table auto_increment, le dernier insert_id |
|
| 1344 | + if (!$desc) { |
|
| 1345 | + $desc = description_table($table, $serveur); |
|
| 1346 | + } |
|
| 1347 | + if (!$desc) { |
|
| 1348 | + $tab_couples = []; |
|
| 1349 | + } |
|
| 1350 | + $fields = $desc['field'] ?? []; |
|
| 1351 | + |
|
| 1352 | + $cles = '(' . join(',', array_keys(reset($tab_couples))) . ')'; |
|
| 1353 | + $valeurs = []; |
|
| 1354 | + $r = false; |
|
| 1355 | + |
|
| 1356 | + // Quoter et Inserer par groupes de 100 max pour eviter un debordement de pile |
|
| 1357 | + foreach ($tab_couples as $couples) { |
|
| 1358 | + foreach ($couples as $champ => $val) { |
|
| 1359 | + $couples[$champ] = spip_mysql_cite($val, $fields[$champ]); |
|
| 1360 | + } |
|
| 1361 | + $valeurs[] = '(' . join(',', $couples) . ')'; |
|
| 1362 | + if (count($valeurs) >= 100) { |
|
| 1363 | + $r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter); |
|
| 1364 | + $valeurs = []; |
|
| 1365 | + } |
|
| 1366 | + } |
|
| 1367 | + if (count($valeurs)) { |
|
| 1368 | + $r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter); |
|
| 1369 | + } |
|
| 1370 | + |
|
| 1371 | + return $r; // dans le cas d'une table auto_increment, le dernier insert_id |
|
| 1372 | 1372 | } |
| 1373 | 1373 | |
| 1374 | 1374 | /** |
@@ -1393,20 +1393,20 @@ discard block |
||
| 1393 | 1393 | * - array Tableau décrivant la requête et son temps d'exécution si var_profile est actif |
| 1394 | 1394 | */ |
| 1395 | 1395 | function spip_mysql_update($table, $champs, $where = '', $desc = [], $serveur = '', $requeter = true) { |
| 1396 | - $set = []; |
|
| 1397 | - foreach ($champs as $champ => $val) { |
|
| 1398 | - $set[] = $champ . "=$val"; |
|
| 1399 | - } |
|
| 1400 | - if (!empty($set)) { |
|
| 1401 | - return spip_mysql_query( |
|
| 1402 | - calculer_mysql_expression('UPDATE', $table, ',') |
|
| 1403 | - . calculer_mysql_expression('SET', $set, ',') |
|
| 1404 | - . calculer_mysql_expression('WHERE', $where), |
|
| 1405 | - $serveur, |
|
| 1406 | - $requeter |
|
| 1407 | - ); |
|
| 1408 | - } |
|
| 1409 | - return false; |
|
| 1396 | + $set = []; |
|
| 1397 | + foreach ($champs as $champ => $val) { |
|
| 1398 | + $set[] = $champ . "=$val"; |
|
| 1399 | + } |
|
| 1400 | + if (!empty($set)) { |
|
| 1401 | + return spip_mysql_query( |
|
| 1402 | + calculer_mysql_expression('UPDATE', $table, ',') |
|
| 1403 | + . calculer_mysql_expression('SET', $set, ',') |
|
| 1404 | + . calculer_mysql_expression('WHERE', $where), |
|
| 1405 | + $serveur, |
|
| 1406 | + $requeter |
|
| 1407 | + ); |
|
| 1408 | + } |
|
| 1409 | + return false; |
|
| 1410 | 1410 | } |
| 1411 | 1411 | |
| 1412 | 1412 | /** |
@@ -1439,29 +1439,29 @@ discard block |
||
| 1439 | 1439 | */ |
| 1440 | 1440 | function spip_mysql_updateq($table, $champs, $where = '', $desc = [], $serveur = '', $requeter = true) { |
| 1441 | 1441 | |
| 1442 | - if (!$champs) { |
|
| 1443 | - return; |
|
| 1444 | - } |
|
| 1445 | - if (!$desc) { |
|
| 1446 | - $desc = description_table($table, $serveur); |
|
| 1447 | - } |
|
| 1448 | - if (!$desc) { |
|
| 1449 | - $champs = []; |
|
| 1450 | - } else { |
|
| 1451 | - $fields = $desc['field']; |
|
| 1452 | - } |
|
| 1453 | - $set = []; |
|
| 1454 | - foreach ($champs as $champ => $val) { |
|
| 1455 | - $set[] = $champ . '=' . spip_mysql_cite($val, @$fields[$champ]); |
|
| 1456 | - } |
|
| 1457 | - |
|
| 1458 | - return spip_mysql_query( |
|
| 1459 | - calculer_mysql_expression('UPDATE', $table, ',') |
|
| 1460 | - . calculer_mysql_expression('SET', $set, ',') |
|
| 1461 | - . calculer_mysql_expression('WHERE', $where), |
|
| 1462 | - $serveur, |
|
| 1463 | - $requeter |
|
| 1464 | - ); |
|
| 1442 | + if (!$champs) { |
|
| 1443 | + return; |
|
| 1444 | + } |
|
| 1445 | + if (!$desc) { |
|
| 1446 | + $desc = description_table($table, $serveur); |
|
| 1447 | + } |
|
| 1448 | + if (!$desc) { |
|
| 1449 | + $champs = []; |
|
| 1450 | + } else { |
|
| 1451 | + $fields = $desc['field']; |
|
| 1452 | + } |
|
| 1453 | + $set = []; |
|
| 1454 | + foreach ($champs as $champ => $val) { |
|
| 1455 | + $set[] = $champ . '=' . spip_mysql_cite($val, @$fields[$champ]); |
|
| 1456 | + } |
|
| 1457 | + |
|
| 1458 | + return spip_mysql_query( |
|
| 1459 | + calculer_mysql_expression('UPDATE', $table, ',') |
|
| 1460 | + . calculer_mysql_expression('SET', $set, ',') |
|
| 1461 | + . calculer_mysql_expression('WHERE', $where), |
|
| 1462 | + $serveur, |
|
| 1463 | + $requeter |
|
| 1464 | + ); |
|
| 1465 | 1465 | } |
| 1466 | 1466 | |
| 1467 | 1467 | /** |
@@ -1477,22 +1477,22 @@ discard block |
||
| 1477 | 1477 | * - false en cas d'erreur. |
| 1478 | 1478 | **/ |
| 1479 | 1479 | function spip_mysql_delete($table, $where = '', $serveur = '', $requeter = true) { |
| 1480 | - $res = spip_mysql_query( |
|
| 1481 | - calculer_mysql_expression('DELETE FROM', $table, ',') |
|
| 1482 | - . calculer_mysql_expression('WHERE', $where), |
|
| 1483 | - $serveur, |
|
| 1484 | - $requeter |
|
| 1485 | - ); |
|
| 1486 | - if (!$requeter) { |
|
| 1487 | - return $res; |
|
| 1488 | - } |
|
| 1489 | - if ($res) { |
|
| 1490 | - $link = _mysql_link($serveur); |
|
| 1491 | - |
|
| 1492 | - return mysqli_affected_rows($link); |
|
| 1493 | - } else { |
|
| 1494 | - return false; |
|
| 1495 | - } |
|
| 1480 | + $res = spip_mysql_query( |
|
| 1481 | + calculer_mysql_expression('DELETE FROM', $table, ',') |
|
| 1482 | + . calculer_mysql_expression('WHERE', $where), |
|
| 1483 | + $serveur, |
|
| 1484 | + $requeter |
|
| 1485 | + ); |
|
| 1486 | + if (!$requeter) { |
|
| 1487 | + return $res; |
|
| 1488 | + } |
|
| 1489 | + if ($res) { |
|
| 1490 | + $link = _mysql_link($serveur); |
|
| 1491 | + |
|
| 1492 | + return mysqli_affected_rows($link); |
|
| 1493 | + } else { |
|
| 1494 | + return false; |
|
| 1495 | + } |
|
| 1496 | 1496 | } |
| 1497 | 1497 | |
| 1498 | 1498 | |
@@ -1521,10 +1521,10 @@ discard block |
||
| 1521 | 1521 | * - false en cas d'erreur. |
| 1522 | 1522 | **/ |
| 1523 | 1523 | function spip_mysql_replace($table, $couples, $desc = [], $serveur = '', $requeter = true) { |
| 1524 | - return spip_mysql_query("REPLACE $table (" . join(',', array_keys($couples)) . ') VALUES (' . join( |
|
| 1525 | - ',', |
|
| 1526 | - array_map('_q', $couples) |
|
| 1527 | - ) . ')', $serveur, $requeter); |
|
| 1524 | + return spip_mysql_query("REPLACE $table (" . join(',', array_keys($couples)) . ') VALUES (' . join( |
|
| 1525 | + ',', |
|
| 1526 | + array_map('_q', $couples) |
|
| 1527 | + ) . ')', $serveur, $requeter); |
|
| 1528 | 1528 | } |
| 1529 | 1529 | |
| 1530 | 1530 | |
@@ -1553,14 +1553,14 @@ discard block |
||
| 1553 | 1553 | * - false en cas d'erreur. |
| 1554 | 1554 | **/ |
| 1555 | 1555 | function spip_mysql_replace_multi($table, $tab_couples, $desc = [], $serveur = '', $requeter = true) { |
| 1556 | - $cles = '(' . join(',', array_keys($tab_couples[0])) . ')'; |
|
| 1557 | - $valeurs = []; |
|
| 1558 | - foreach ($tab_couples as $couples) { |
|
| 1559 | - $valeurs[] = '(' . join(',', array_map('_q', $couples)) . ')'; |
|
| 1560 | - } |
|
| 1561 | - $valeurs = implode(', ', $valeurs); |
|
| 1562 | - |
|
| 1563 | - return spip_mysql_query("REPLACE $table $cles VALUES $valeurs", $serveur, $requeter); |
|
| 1556 | + $cles = '(' . join(',', array_keys($tab_couples[0])) . ')'; |
|
| 1557 | + $valeurs = []; |
|
| 1558 | + foreach ($tab_couples as $couples) { |
|
| 1559 | + $valeurs[] = '(' . join(',', array_map('_q', $couples)) . ')'; |
|
| 1560 | + } |
|
| 1561 | + $valeurs = implode(', ', $valeurs); |
|
| 1562 | + |
|
| 1563 | + return spip_mysql_query("REPLACE $table $cles VALUES $valeurs", $serveur, $requeter); |
|
| 1564 | 1564 | } |
| 1565 | 1565 | |
| 1566 | 1566 | |
@@ -1575,32 +1575,32 @@ discard block |
||
| 1575 | 1575 | * @return string texte de sélection pour la requête |
| 1576 | 1576 | */ |
| 1577 | 1577 | function spip_mysql_multi($objet, $lang) { |
| 1578 | - $lengthlang = strlen("[$lang]"); |
|
| 1579 | - $posmulti = 'INSTR(' . $objet . ", '<multi>')"; |
|
| 1580 | - $posfinmulti = 'INSTR(' . $objet . ", '</multi>')"; |
|
| 1581 | - $debutchaine = 'LEFT(' . $objet . ", $posmulti-1)"; |
|
| 1582 | - $finchaine = 'RIGHT(' . $objet . ', CHAR_LENGTH(' . $objet . ") -(7+$posfinmulti))"; |
|
| 1583 | - $chainemulti = 'TRIM(SUBSTRING(' . $objet . ", $posmulti+7, $posfinmulti -(7+$posmulti)))"; |
|
| 1584 | - $poslang = "INSTR($chainemulti,'[" . $lang . "]')"; |
|
| 1585 | - $poslang = "IF($poslang=0,INSTR($chainemulti,']')+1,$poslang+$lengthlang)"; |
|
| 1586 | - $chainelang = 'TRIM(SUBSTRING(' . $objet . ", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))"; |
|
| 1587 | - $posfinlang = 'INSTR(' . $chainelang . ", '[')"; |
|
| 1588 | - $chainelang = "IF($posfinlang>0,LEFT($chainelang,$posfinlang-1),$chainelang)"; |
|
| 1589 | - //$chainelang = "LEFT($chainelang,$posfinlang-1)"; |
|
| 1590 | - $retour = "(TRIM(IF($posmulti = 0 , " . |
|
| 1591 | - ' TRIM(' . $objet . '), ' . |
|
| 1592 | - ' CONCAT( ' . |
|
| 1593 | - " $debutchaine, " . |
|
| 1594 | - ' IF( ' . |
|
| 1595 | - " $poslang = 0, " . |
|
| 1596 | - " $chainemulti, " . |
|
| 1597 | - " $chainelang" . |
|
| 1598 | - ' ), ' . |
|
| 1599 | - " $finchaine" . |
|
| 1600 | - ' ) ' . |
|
| 1601 | - '))) AS multi'; |
|
| 1602 | - |
|
| 1603 | - return $retour; |
|
| 1578 | + $lengthlang = strlen("[$lang]"); |
|
| 1579 | + $posmulti = 'INSTR(' . $objet . ", '<multi>')"; |
|
| 1580 | + $posfinmulti = 'INSTR(' . $objet . ", '</multi>')"; |
|
| 1581 | + $debutchaine = 'LEFT(' . $objet . ", $posmulti-1)"; |
|
| 1582 | + $finchaine = 'RIGHT(' . $objet . ', CHAR_LENGTH(' . $objet . ") -(7+$posfinmulti))"; |
|
| 1583 | + $chainemulti = 'TRIM(SUBSTRING(' . $objet . ", $posmulti+7, $posfinmulti -(7+$posmulti)))"; |
|
| 1584 | + $poslang = "INSTR($chainemulti,'[" . $lang . "]')"; |
|
| 1585 | + $poslang = "IF($poslang=0,INSTR($chainemulti,']')+1,$poslang+$lengthlang)"; |
|
| 1586 | + $chainelang = 'TRIM(SUBSTRING(' . $objet . ", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))"; |
|
| 1587 | + $posfinlang = 'INSTR(' . $chainelang . ", '[')"; |
|
| 1588 | + $chainelang = "IF($posfinlang>0,LEFT($chainelang,$posfinlang-1),$chainelang)"; |
|
| 1589 | + //$chainelang = "LEFT($chainelang,$posfinlang-1)"; |
|
| 1590 | + $retour = "(TRIM(IF($posmulti = 0 , " . |
|
| 1591 | + ' TRIM(' . $objet . '), ' . |
|
| 1592 | + ' CONCAT( ' . |
|
| 1593 | + " $debutchaine, " . |
|
| 1594 | + ' IF( ' . |
|
| 1595 | + " $poslang = 0, " . |
|
| 1596 | + " $chainemulti, " . |
|
| 1597 | + " $chainelang" . |
|
| 1598 | + ' ), ' . |
|
| 1599 | + " $finchaine" . |
|
| 1600 | + ' ) ' . |
|
| 1601 | + '))) AS multi'; |
|
| 1602 | + |
|
| 1603 | + return $retour; |
|
| 1604 | 1604 | } |
| 1605 | 1605 | |
| 1606 | 1606 | /** |
@@ -1614,7 +1614,7 @@ discard block |
||
| 1614 | 1614 | * Valeur hexadécimale pour MySQL |
| 1615 | 1615 | **/ |
| 1616 | 1616 | function spip_mysql_hex($v) { |
| 1617 | - return '0x' . $v; |
|
| 1617 | + return '0x' . $v; |
|
| 1618 | 1618 | } |
| 1619 | 1619 | |
| 1620 | 1620 | /** |
@@ -1630,15 +1630,15 @@ discard block |
||
| 1630 | 1630 | * Donnée prête à être utilisée par le gestionnaire SQL |
| 1631 | 1631 | */ |
| 1632 | 1632 | function spip_mysql_quote($v, $type = '') { |
| 1633 | - if (!is_array($v)) { |
|
| 1634 | - return spip_mysql_cite($v, $type); |
|
| 1635 | - } |
|
| 1636 | - |
|
| 1637 | - // si c'est un tableau, le parcourir en propageant le type |
|
| 1638 | - foreach ($v as $k => $r) { |
|
| 1639 | - $v[$k] = spip_mysql_quote($r, $type); |
|
| 1640 | - } |
|
| 1641 | - return implode(',', $v); |
|
| 1633 | + if (!is_array($v)) { |
|
| 1634 | + return spip_mysql_cite($v, $type); |
|
| 1635 | + } |
|
| 1636 | + |
|
| 1637 | + // si c'est un tableau, le parcourir en propageant le type |
|
| 1638 | + foreach ($v as $k => $r) { |
|
| 1639 | + $v[$k] = spip_mysql_quote($r, $type); |
|
| 1640 | + } |
|
| 1641 | + return implode(',', $v); |
|
| 1642 | 1642 | } |
| 1643 | 1643 | |
| 1644 | 1644 | /** |
@@ -1654,18 +1654,18 @@ discard block |
||
| 1654 | 1654 | * Expression SQL |
| 1655 | 1655 | **/ |
| 1656 | 1656 | function spip_mysql_date_proche($champ, $interval, $unite) { |
| 1657 | - $use_now = ( ($champ === 'maj' or strpos($champ, '.maj')) ? true : false ); |
|
| 1658 | - return '(' |
|
| 1659 | - . $champ |
|
| 1660 | - . (($interval <= 0) ? '>' : '<') |
|
| 1661 | - . (($interval <= 0) ? 'DATE_SUB' : 'DATE_ADD') |
|
| 1662 | - . '(' |
|
| 1663 | - . ($use_now ? 'NOW()' : sql_quote(date('Y-m-d H:i:s'))) |
|
| 1664 | - . ', INTERVAL ' |
|
| 1665 | - . (($interval > 0) ? $interval : (0 - $interval)) |
|
| 1666 | - . ' ' |
|
| 1667 | - . $unite |
|
| 1668 | - . '))'; |
|
| 1657 | + $use_now = ( ($champ === 'maj' or strpos($champ, '.maj')) ? true : false ); |
|
| 1658 | + return '(' |
|
| 1659 | + . $champ |
|
| 1660 | + . (($interval <= 0) ? '>' : '<') |
|
| 1661 | + . (($interval <= 0) ? 'DATE_SUB' : 'DATE_ADD') |
|
| 1662 | + . '(' |
|
| 1663 | + . ($use_now ? 'NOW()' : sql_quote(date('Y-m-d H:i:s'))) |
|
| 1664 | + . ', INTERVAL ' |
|
| 1665 | + . (($interval > 0) ? $interval : (0 - $interval)) |
|
| 1666 | + . ' ' |
|
| 1667 | + . $unite |
|
| 1668 | + . '))'; |
|
| 1669 | 1669 | } |
| 1670 | 1670 | |
| 1671 | 1671 | |
@@ -1689,7 +1689,7 @@ discard block |
||
| 1689 | 1689 | * Expression de requête SQL |
| 1690 | 1690 | **/ |
| 1691 | 1691 | function spip_mysql_in($val, $valeurs, $not = '', $serveur = '', $requeter = true) { |
| 1692 | - return "($val $not IN ($valeurs))"; |
|
| 1692 | + return "($val $not IN ($valeurs))"; |
|
| 1693 | 1693 | } |
| 1694 | 1694 | |
| 1695 | 1695 | |
@@ -1701,39 +1701,39 @@ discard block |
||
| 1701 | 1701 | * @return string|number texte ou nombre échappé |
| 1702 | 1702 | */ |
| 1703 | 1703 | function spip_mysql_cite($v, $type) { |
| 1704 | - if (!$type) { |
|
| 1705 | - if (is_bool($v)) { |
|
| 1706 | - return strval(intval($v)); |
|
| 1707 | - } elseif (is_numeric($v)) { |
|
| 1708 | - return strval($v); |
|
| 1709 | - } elseif ($v === null) { |
|
| 1710 | - return "''"; |
|
| 1711 | - } |
|
| 1712 | - return "'" . addslashes($v) . "'"; |
|
| 1713 | - } |
|
| 1714 | - |
|
| 1715 | - if ($v === null) { |
|
| 1716 | - if (stripos($type, 'NOT NULL') === false) { |
|
| 1717 | - // null php se traduit en NULL SQL |
|
| 1718 | - return 'NULL'; |
|
| 1719 | - } else { |
|
| 1720 | - return "''"; |
|
| 1721 | - } |
|
| 1722 | - } elseif (sql_test_date($type) and preg_match('/^\w+\(/', $v)) { |
|
| 1723 | - return $v; |
|
| 1724 | - } elseif (sql_test_int($type)) { |
|
| 1725 | - if ( |
|
| 1726 | - is_numeric($v) |
|
| 1727 | - or ($v and ctype_xdigit(substr($v, 2)) and $v[0] === '0' and $v[1] === 'x') |
|
| 1728 | - ) { |
|
| 1729 | - return $v; |
|
| 1730 | - } else { |
|
| 1731 | - // si pas numerique, forcer le intval |
|
| 1732 | - return intval($v); |
|
| 1733 | - } |
|
| 1734 | - } |
|
| 1735 | - |
|
| 1736 | - return ("'" . addslashes($v) . "'"); |
|
| 1704 | + if (!$type) { |
|
| 1705 | + if (is_bool($v)) { |
|
| 1706 | + return strval(intval($v)); |
|
| 1707 | + } elseif (is_numeric($v)) { |
|
| 1708 | + return strval($v); |
|
| 1709 | + } elseif ($v === null) { |
|
| 1710 | + return "''"; |
|
| 1711 | + } |
|
| 1712 | + return "'" . addslashes($v) . "'"; |
|
| 1713 | + } |
|
| 1714 | + |
|
| 1715 | + if ($v === null) { |
|
| 1716 | + if (stripos($type, 'NOT NULL') === false) { |
|
| 1717 | + // null php se traduit en NULL SQL |
|
| 1718 | + return 'NULL'; |
|
| 1719 | + } else { |
|
| 1720 | + return "''"; |
|
| 1721 | + } |
|
| 1722 | + } elseif (sql_test_date($type) and preg_match('/^\w+\(/', $v)) { |
|
| 1723 | + return $v; |
|
| 1724 | + } elseif (sql_test_int($type)) { |
|
| 1725 | + if ( |
|
| 1726 | + is_numeric($v) |
|
| 1727 | + or ($v and ctype_xdigit(substr($v, 2)) and $v[0] === '0' and $v[1] === 'x') |
|
| 1728 | + ) { |
|
| 1729 | + return $v; |
|
| 1730 | + } else { |
|
| 1731 | + // si pas numerique, forcer le intval |
|
| 1732 | + return intval($v); |
|
| 1733 | + } |
|
| 1734 | + } |
|
| 1735 | + |
|
| 1736 | + return ("'" . addslashes($v) . "'"); |
|
| 1737 | 1737 | } |
| 1738 | 1738 | |
| 1739 | 1739 | /** |
@@ -1743,7 +1743,7 @@ discard block |
||
| 1743 | 1743 | * True si on a les fonctions, false sinon |
| 1744 | 1744 | */ |
| 1745 | 1745 | function spip_versions_mysql() { |
| 1746 | - return function_exists('mysqli_query'); |
|
| 1746 | + return function_exists('mysqli_query'); |
|
| 1747 | 1747 | } |
| 1748 | 1748 | |
| 1749 | 1749 | |
@@ -1756,20 +1756,20 @@ discard block |
||
| 1756 | 1756 | * - chaîne : code compilé pour le faire désactiver par SPIP sinon |
| 1757 | 1757 | */ |
| 1758 | 1758 | function test_rappel_nom_base_mysql($server_db) { |
| 1759 | - $GLOBALS['mysql_rappel_nom_base'] = true; |
|
| 1760 | - sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db); |
|
| 1761 | - $ok = spip_query("INSERT INTO spip_meta (nom,valeur) VALUES ('mysql_rappel_nom_base', 'test')", $server_db); |
|
| 1759 | + $GLOBALS['mysql_rappel_nom_base'] = true; |
|
| 1760 | + sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db); |
|
| 1761 | + $ok = spip_query("INSERT INTO spip_meta (nom,valeur) VALUES ('mysql_rappel_nom_base', 'test')", $server_db); |
|
| 1762 | 1762 | |
| 1763 | - if ($ok) { |
|
| 1764 | - sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db); |
|
| 1763 | + if ($ok) { |
|
| 1764 | + sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db); |
|
| 1765 | 1765 | |
| 1766 | - return ''; |
|
| 1767 | - } else { |
|
| 1768 | - $GLOBALS['mysql_rappel_nom_base'] = false; |
|
| 1766 | + return ''; |
|
| 1767 | + } else { |
|
| 1768 | + $GLOBALS['mysql_rappel_nom_base'] = false; |
|
| 1769 | 1769 | |
| 1770 | - return "\$GLOBALS['mysql_rappel_nom_base'] = false; " . |
|
| 1771 | - "/* echec de test_rappel_nom_base_mysql a l'installation. */\n"; |
|
| 1772 | - } |
|
| 1770 | + return "\$GLOBALS['mysql_rappel_nom_base'] = false; " . |
|
| 1771 | + "/* echec de test_rappel_nom_base_mysql a l'installation. */\n"; |
|
| 1772 | + } |
|
| 1773 | 1773 | } |
| 1774 | 1774 | |
| 1775 | 1775 | /** |
@@ -1783,13 +1783,13 @@ discard block |
||
| 1783 | 1783 | * - chaîne : code compilé pour l'indiquer le résultat du test à SPIP |
| 1784 | 1784 | */ |
| 1785 | 1785 | function test_sql_mode_mysql($server_db) { |
| 1786 | - $res = sql_select('version() as v', '', '', '', '', '', '', $server_db); |
|
| 1787 | - $row = sql_fetch($res, $server_db); |
|
| 1788 | - if (version_compare($row['v'], '5.0.0', '>=')) { |
|
| 1789 | - defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE', true); |
|
| 1786 | + $res = sql_select('version() as v', '', '', '', '', '', '', $server_db); |
|
| 1787 | + $row = sql_fetch($res, $server_db); |
|
| 1788 | + if (version_compare($row['v'], '5.0.0', '>=')) { |
|
| 1789 | + defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE', true); |
|
| 1790 | 1790 | |
| 1791 | - return "defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE',true);\n"; |
|
| 1792 | - } |
|
| 1791 | + return "defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE',true);\n"; |
|
| 1792 | + } |
|
| 1793 | 1793 | |
| 1794 | - return ''; |
|
| 1794 | + return ''; |
|
| 1795 | 1795 | } |
@@ -16,7 +16,7 @@ discard block |
||
| 16 | 16 | */ |
| 17 | 17 | |
| 18 | 18 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 19 | - return; |
|
| 19 | + return; |
|
| 20 | 20 | } |
| 21 | 21 | |
| 22 | 22 | /** |
@@ -25,20 +25,20 @@ discard block |
||
| 25 | 25 | * @uses info_copyright() |
| 26 | 26 | **/ |
| 27 | 27 | function install_etape__dist() { |
| 28 | - utiliser_langue_visiteur(); |
|
| 29 | - $menu_langues = menu_langues('var_lang_ecrire'); |
|
| 30 | - if (!$menu_langues) { |
|
| 31 | - redirige_url_ecrire('install', 'etape=chmod'); |
|
| 32 | - } else { |
|
| 33 | - include_spip('inc/presentation'); // pour info_copyright |
|
| 28 | + utiliser_langue_visiteur(); |
|
| 29 | + $menu_langues = menu_langues('var_lang_ecrire'); |
|
| 30 | + if (!$menu_langues) { |
|
| 31 | + redirige_url_ecrire('install', 'etape=chmod'); |
|
| 32 | + } else { |
|
| 33 | + include_spip('inc/presentation'); // pour info_copyright |
|
| 34 | 34 | |
| 35 | - $res = "<div class='petit-centre'><img alt='SPIP' class='logo' src='" . chemin_image('logo-spip.png') . "' />\n" . |
|
| 36 | - "<p class='small'>" . info_copyright() . "</p></div>\n" . |
|
| 37 | - '<p>' . _T('install_select_langue') . '</p>' . |
|
| 38 | - '<div>' . $menu_langues . "</div>\n" . |
|
| 39 | - generer_form_ecrire('install', "<input type='hidden' name='etape' value='chmod' />" . bouton_suivant()); |
|
| 35 | + $res = "<div class='petit-centre'><img alt='SPIP' class='logo' src='" . chemin_image('logo-spip.png') . "' />\n" . |
|
| 36 | + "<p class='small'>" . info_copyright() . "</p></div>\n" . |
|
| 37 | + '<p>' . _T('install_select_langue') . '</p>' . |
|
| 38 | + '<div>' . $menu_langues . "</div>\n" . |
|
| 39 | + generer_form_ecrire('install', "<input type='hidden' name='etape' value='chmod' />" . bouton_suivant()); |
|
| 40 | 40 | |
| 41 | - $minipage = new Spip\Afficher\Minipage\Installation(); |
|
| 42 | - echo $minipage->page($res); |
|
| 43 | - } |
|
| 41 | + $minipage = new Spip\Afficher\Minipage\Installation(); |
|
| 42 | + echo $minipage->page($res); |
|
| 43 | + } |
|
| 44 | 44 | } |
@@ -10,89 +10,89 @@ |
||
| 10 | 10 | \***************************************************************************/ |
| 11 | 11 | |
| 12 | 12 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 13 | - return; |
|
| 13 | + return; |
|
| 14 | 14 | } |
| 15 | 15 | |
| 16 | 16 | function install_etape_ldap1_dist() { |
| 17 | - $adresse_ldap = defined('_INSTALL_HOST_LDAP') |
|
| 18 | - ? _INSTALL_HOST_LDAP |
|
| 19 | - : 'localhost'; |
|
| 17 | + $adresse_ldap = defined('_INSTALL_HOST_LDAP') |
|
| 18 | + ? _INSTALL_HOST_LDAP |
|
| 19 | + : 'localhost'; |
|
| 20 | 20 | |
| 21 | - $port_ldap = defined('_INSTALL_PORT_LDAP') |
|
| 22 | - ? _INSTALL_PORT_LDAP |
|
| 23 | - : 389; |
|
| 21 | + $port_ldap = defined('_INSTALL_PORT_LDAP') |
|
| 22 | + ? _INSTALL_PORT_LDAP |
|
| 23 | + : 389; |
|
| 24 | 24 | |
| 25 | - $tls_ldap = defined('_INSTALL_TLS_LDAP') |
|
| 26 | - ? _INSTALL_TLS_LDAP |
|
| 27 | - : 'non'; |
|
| 25 | + $tls_ldap = defined('_INSTALL_TLS_LDAP') |
|
| 26 | + ? _INSTALL_TLS_LDAP |
|
| 27 | + : 'non'; |
|
| 28 | 28 | |
| 29 | - $protocole_ldap = defined('_INSTALL_PROTOCOLE_LDAP') |
|
| 30 | - ? _INSTALL_PROTOCOLE_LDAP |
|
| 31 | - : 3; // on essaie 2 en cas d'echec |
|
| 29 | + $protocole_ldap = defined('_INSTALL_PROTOCOLE_LDAP') |
|
| 30 | + ? _INSTALL_PROTOCOLE_LDAP |
|
| 31 | + : 3; // on essaie 2 en cas d'echec |
|
| 32 | 32 | |
| 33 | - $login_ldap = defined('_INSTALL_USER_LDAP') |
|
| 34 | - ? _INSTALL_USER_LDAP |
|
| 35 | - : ''; |
|
| 33 | + $login_ldap = defined('_INSTALL_USER_LDAP') |
|
| 34 | + ? _INSTALL_USER_LDAP |
|
| 35 | + : ''; |
|
| 36 | 36 | |
| 37 | - $pass_ldap = defined('_INSTALL_PASS_LDAP') |
|
| 38 | - ? _INSTALL_PASS_LDAP |
|
| 39 | - : ''; |
|
| 37 | + $pass_ldap = defined('_INSTALL_PASS_LDAP') |
|
| 38 | + ? _INSTALL_PASS_LDAP |
|
| 39 | + : ''; |
|
| 40 | 40 | |
| 41 | - $minipage = new Spip\Afficher\Minipage\Installation(); |
|
| 42 | - echo $minipage->installDebutPage(['onload' => 'document.getElementById(\'suivant\').focus();return false;']); |
|
| 41 | + $minipage = new Spip\Afficher\Minipage\Installation(); |
|
| 42 | + echo $minipage->installDebutPage(['onload' => 'document.getElementById(\'suivant\').focus();return false;']); |
|
| 43 | 43 | |
| 44 | - echo info_etape( |
|
| 45 | - _T('titre_connexion_ldap'), |
|
| 46 | - info_progression_etape(1, 'etape_ldap', 'install/') |
|
| 47 | - ); |
|
| 44 | + echo info_etape( |
|
| 45 | + _T('titre_connexion_ldap'), |
|
| 46 | + info_progression_etape(1, 'etape_ldap', 'install/') |
|
| 47 | + ); |
|
| 48 | 48 | |
| 49 | - echo generer_form_ecrire('install', ( |
|
| 50 | - "\n<input type='hidden' name='etape' value='ldap2' />" |
|
| 51 | - . fieldset( |
|
| 52 | - _T('entree_adresse_annuaire'), |
|
| 53 | - [ |
|
| 54 | - 'adresse_ldap' => [ |
|
| 55 | - 'label' => _T('texte_adresse_annuaire_1'), |
|
| 56 | - 'valeur' => $adresse_ldap |
|
| 57 | - ], |
|
| 58 | - 'port_ldap' => [ |
|
| 59 | - 'label' => _T('entree_port_annuaire') . '<br />' . _T('texte_port_annuaire'), |
|
| 60 | - 'valeur' => $port_ldap |
|
| 61 | - ], |
|
| 62 | - 'tls_ldap' => [ |
|
| 63 | - 'label' => '<b>' . _T('tls_ldap') . '</b>', |
|
| 64 | - 'valeur' => $tls_ldap, |
|
| 65 | - 'alternatives' => [ |
|
| 66 | - 'non' => _T('item_non'), |
|
| 67 | - 'oui' => _T('item_oui') |
|
| 68 | - ] |
|
| 69 | - ], |
|
| 70 | - 'protocole_ldap' => [ |
|
| 71 | - 'label' => _T('protocole_ldap'), |
|
| 72 | - 'valeur' => $protocole_ldap, |
|
| 73 | - 'alternatives' => [ |
|
| 74 | - '3' => '3', |
|
| 75 | - '2' => '2' |
|
| 76 | - ] |
|
| 77 | - ] |
|
| 78 | - ] |
|
| 79 | - ) |
|
| 49 | + echo generer_form_ecrire('install', ( |
|
| 50 | + "\n<input type='hidden' name='etape' value='ldap2' />" |
|
| 51 | + . fieldset( |
|
| 52 | + _T('entree_adresse_annuaire'), |
|
| 53 | + [ |
|
| 54 | + 'adresse_ldap' => [ |
|
| 55 | + 'label' => _T('texte_adresse_annuaire_1'), |
|
| 56 | + 'valeur' => $adresse_ldap |
|
| 57 | + ], |
|
| 58 | + 'port_ldap' => [ |
|
| 59 | + 'label' => _T('entree_port_annuaire') . '<br />' . _T('texte_port_annuaire'), |
|
| 60 | + 'valeur' => $port_ldap |
|
| 61 | + ], |
|
| 62 | + 'tls_ldap' => [ |
|
| 63 | + 'label' => '<b>' . _T('tls_ldap') . '</b>', |
|
| 64 | + 'valeur' => $tls_ldap, |
|
| 65 | + 'alternatives' => [ |
|
| 66 | + 'non' => _T('item_non'), |
|
| 67 | + 'oui' => _T('item_oui') |
|
| 68 | + ] |
|
| 69 | + ], |
|
| 70 | + 'protocole_ldap' => [ |
|
| 71 | + 'label' => _T('protocole_ldap'), |
|
| 72 | + 'valeur' => $protocole_ldap, |
|
| 73 | + 'alternatives' => [ |
|
| 74 | + '3' => '3', |
|
| 75 | + '2' => '2' |
|
| 76 | + ] |
|
| 77 | + ] |
|
| 78 | + ] |
|
| 79 | + ) |
|
| 80 | 80 | |
| 81 | - . "\n<p>" . _T('texte_acces_ldap_anonyme_1') . '</p>' |
|
| 82 | - . fieldset( |
|
| 83 | - _T('connexion_ldap'), |
|
| 84 | - [ |
|
| 85 | - 'login_ldap' => [ |
|
| 86 | - 'label' => _T('texte_login_ldap_1'), |
|
| 87 | - 'valeur' => $login_ldap |
|
| 88 | - ], |
|
| 89 | - 'pass_ldap' => [ |
|
| 90 | - 'label' => _T('entree_passe_ldap'), |
|
| 91 | - 'valeur' => $pass_ldap |
|
| 92 | - ] |
|
| 93 | - ] |
|
| 94 | - ) |
|
| 95 | - . bouton_suivant())); |
|
| 81 | + . "\n<p>" . _T('texte_acces_ldap_anonyme_1') . '</p>' |
|
| 82 | + . fieldset( |
|
| 83 | + _T('connexion_ldap'), |
|
| 84 | + [ |
|
| 85 | + 'login_ldap' => [ |
|
| 86 | + 'label' => _T('texte_login_ldap_1'), |
|
| 87 | + 'valeur' => $login_ldap |
|
| 88 | + ], |
|
| 89 | + 'pass_ldap' => [ |
|
| 90 | + 'label' => _T('entree_passe_ldap'), |
|
| 91 | + 'valeur' => $pass_ldap |
|
| 92 | + ] |
|
| 93 | + ] |
|
| 94 | + ) |
|
| 95 | + . bouton_suivant())); |
|
| 96 | 96 | |
| 97 | - echo $minipage->installFinPage(); |
|
| 97 | + echo $minipage->installFinPage(); |
|
| 98 | 98 | } |
@@ -16,5 +16,5 @@ |
||
| 16 | 16 | * Présentation des pages simplifiées publiques pour envoyer un message à un utilisateur |
| 17 | 17 | **/ |
| 18 | 18 | class Page extends AbstractPage { |
| 19 | - public const TYPE = 'public'; |
|
| 19 | + public const TYPE = 'public'; |
|
| 20 | 20 | } |
@@ -4,248 +4,248 @@ discard block |
||
| 4 | 4 | // ** ne pas modifier le fichier ** |
| 5 | 5 | |
| 6 | 6 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 7 | - return; |
|
| 7 | + return; |
|
| 8 | 8 | } |
| 9 | 9 | |
| 10 | 10 | $GLOBALS[$GLOBALS['idx_lang']] = array( |
| 11 | 11 | |
| 12 | - // A |
|
| 13 | - 'access_interface_graphique' => 'Back to the full graphic interface', |
|
| 14 | - 'access_mode_texte' => 'Show the simplified text interface', |
|
| 15 | - 'admin_debug' => 'debug', |
|
| 16 | - 'admin_modifier_article' => 'Modify this article', |
|
| 17 | - 'admin_modifier_auteur' => 'Modify this author', |
|
| 18 | - 'admin_modifier_breve' => 'Modify this news item', |
|
| 19 | - 'admin_modifier_mot' => 'Modify this keyword', |
|
| 20 | - 'admin_modifier_rubrique' => 'Modify this section', |
|
| 21 | - 'admin_recalculer' => 'Re-process this page', |
|
| 22 | - 'afficher_calendrier' => 'Show the calendar', |
|
| 23 | - 'afficher_trad' => 'show translations', |
|
| 24 | - 'alerte_maj_impossible' => '<b>Warning!</b> Failed to update the SQL database to version @version@. This may be due to a permissions problem on the database. Please contact your ISP.', |
|
| 25 | - 'alerte_modif_info_concourante' => 'WARNING: This information has been modified elsewhere. The current value is :', |
|
| 26 | - 'analyse_xml' => 'XML parsing', |
|
| 27 | - 'annuler' => 'Cancel', |
|
| 28 | - 'antispam_champ_vide' => 'Please leave this field empty:', |
|
| 29 | - 'articles_recents' => 'Most recent articles', |
|
| 30 | - 'attention_champ_mini_nb_caractères' => 'Warning! At least @nb@ characters', |
|
| 31 | - 'avis_1_erreur_saisie' => 'Your entry contains an error, please check your information.', |
|
| 32 | - 'avis_archive_incorrect' => 'archive is not a valid SPIP file', |
|
| 33 | - 'avis_archive_invalide' => 'archive file is not valid', |
|
| 34 | - 'avis_attention' => 'CAUTION!', |
|
| 35 | - 'avis_champ_incorrect_type_objet' => 'Invalid field name @name@ for object of type @type@', |
|
| 36 | - 'avis_colonne_inexistante' => 'Column @col@ does not exist', |
|
| 37 | - 'avis_erreur' => 'Error: see below', |
|
| 38 | - 'avis_erreur_connexion' => 'Connection error', |
|
| 39 | - 'avis_erreur_cookie' => 'cookie problem', |
|
| 40 | - 'avis_erreur_fonction_contexte' => 'Programming error. This function cannot be called in this context.', |
|
| 41 | - 'avis_erreur_mysql' => 'SQL error', |
|
| 42 | - 'avis_erreur_sauvegarde' => 'Error in backup (@type@ @id_objet@)!', |
|
| 43 | - 'avis_erreur_visiteur' => 'Problem entering the private area', |
|
| 44 | - 'avis_nb_erreurs_saisie' => 'Your entry contains @nb@ errors, please check your information.', |
|
| 12 | + // A |
|
| 13 | + 'access_interface_graphique' => 'Back to the full graphic interface', |
|
| 14 | + 'access_mode_texte' => 'Show the simplified text interface', |
|
| 15 | + 'admin_debug' => 'debug', |
|
| 16 | + 'admin_modifier_article' => 'Modify this article', |
|
| 17 | + 'admin_modifier_auteur' => 'Modify this author', |
|
| 18 | + 'admin_modifier_breve' => 'Modify this news item', |
|
| 19 | + 'admin_modifier_mot' => 'Modify this keyword', |
|
| 20 | + 'admin_modifier_rubrique' => 'Modify this section', |
|
| 21 | + 'admin_recalculer' => 'Re-process this page', |
|
| 22 | + 'afficher_calendrier' => 'Show the calendar', |
|
| 23 | + 'afficher_trad' => 'show translations', |
|
| 24 | + 'alerte_maj_impossible' => '<b>Warning!</b> Failed to update the SQL database to version @version@. This may be due to a permissions problem on the database. Please contact your ISP.', |
|
| 25 | + 'alerte_modif_info_concourante' => 'WARNING: This information has been modified elsewhere. The current value is :', |
|
| 26 | + 'analyse_xml' => 'XML parsing', |
|
| 27 | + 'annuler' => 'Cancel', |
|
| 28 | + 'antispam_champ_vide' => 'Please leave this field empty:', |
|
| 29 | + 'articles_recents' => 'Most recent articles', |
|
| 30 | + 'attention_champ_mini_nb_caractères' => 'Warning! At least @nb@ characters', |
|
| 31 | + 'avis_1_erreur_saisie' => 'Your entry contains an error, please check your information.', |
|
| 32 | + 'avis_archive_incorrect' => 'archive is not a valid SPIP file', |
|
| 33 | + 'avis_archive_invalide' => 'archive file is not valid', |
|
| 34 | + 'avis_attention' => 'CAUTION!', |
|
| 35 | + 'avis_champ_incorrect_type_objet' => 'Invalid field name @name@ for object of type @type@', |
|
| 36 | + 'avis_colonne_inexistante' => 'Column @col@ does not exist', |
|
| 37 | + 'avis_erreur' => 'Error: see below', |
|
| 38 | + 'avis_erreur_connexion' => 'Connection error', |
|
| 39 | + 'avis_erreur_cookie' => 'cookie problem', |
|
| 40 | + 'avis_erreur_fonction_contexte' => 'Programming error. This function cannot be called in this context.', |
|
| 41 | + 'avis_erreur_mysql' => 'SQL error', |
|
| 42 | + 'avis_erreur_sauvegarde' => 'Error in backup (@type@ @id_objet@)!', |
|
| 43 | + 'avis_erreur_visiteur' => 'Problem entering the private area', |
|
| 44 | + 'avis_nb_erreurs_saisie' => 'Your entry contains @nb@ errors, please check your information.', |
|
| 45 | 45 | |
| 46 | - // B |
|
| 47 | - 'barre_a_accent_grave' => 'Insert a capital A with grave accent', |
|
| 48 | - 'barre_aide' => 'Use the typographic short cuts to refine your layout', |
|
| 49 | - 'barre_e_accent_aigu' => 'Insert a capital E with acute accent', |
|
| 50 | - 'barre_eo' => 'Insert an oe-ligature', |
|
| 51 | - 'barre_eo_maj' => 'Insert a capital EO-ligature', |
|
| 52 | - 'barre_euro' => 'Insert a € symbol', |
|
| 53 | - 'barre_gras' => 'Put in {{bold type}}', |
|
| 54 | - 'barre_guillemets' => 'Place between "double quotes"', |
|
| 55 | - 'barre_guillemets_simples' => 'Place between ‘single quotes’', |
|
| 56 | - 'barre_intertitre' => 'Turn into a {{{subheading}}}', |
|
| 57 | - 'barre_italic' => 'Put in {italics}', |
|
| 58 | - 'barre_lien' => 'Turn into a [hyperlink->http://...]', |
|
| 59 | - 'barre_lien_input' => 'Please enter the link address. You may use either an external URL (http://www.mysite.com) or reference another article on this site by simplying entering its number.', |
|
| 60 | - 'barre_note' => 'Turn into a [[Footnote]]', |
|
| 61 | - 'barre_paragraphe' => 'Create a paragraph', |
|
| 62 | - 'barre_quote' => '<quote>Quote a message</quote>', |
|
| 63 | - 'bouton_changer' => 'Change', |
|
| 64 | - 'bouton_chercher' => 'Search', |
|
| 65 | - 'bouton_choisir' => 'Select', |
|
| 66 | - 'bouton_deplacer' => 'Move', |
|
| 67 | - 'bouton_download' => 'Download', |
|
| 68 | - 'bouton_enregistrer' => 'Save', |
|
| 69 | - 'bouton_radio_desactiver_messagerie_interne' => 'Disable internal messaging', |
|
| 70 | - 'bouton_radio_envoi_annonces' => 'Send editorial announcements', |
|
| 71 | - 'bouton_radio_non_envoi_annonces' => 'Do not send any announcements', |
|
| 72 | - 'bouton_radio_non_envoi_liste_nouveautes' => 'Do not send latest news list', |
|
| 73 | - 'bouton_recharger_page' => 'reload this page', |
|
| 74 | - 'bouton_telecharger' => 'Upload', |
|
| 75 | - 'bouton_upload' => 'Upload', |
|
| 76 | - 'bouton_valider' => 'Submit', |
|
| 46 | + // B |
|
| 47 | + 'barre_a_accent_grave' => 'Insert a capital A with grave accent', |
|
| 48 | + 'barre_aide' => 'Use the typographic short cuts to refine your layout', |
|
| 49 | + 'barre_e_accent_aigu' => 'Insert a capital E with acute accent', |
|
| 50 | + 'barre_eo' => 'Insert an oe-ligature', |
|
| 51 | + 'barre_eo_maj' => 'Insert a capital EO-ligature', |
|
| 52 | + 'barre_euro' => 'Insert a € symbol', |
|
| 53 | + 'barre_gras' => 'Put in {{bold type}}', |
|
| 54 | + 'barre_guillemets' => 'Place between "double quotes"', |
|
| 55 | + 'barre_guillemets_simples' => 'Place between ‘single quotes’', |
|
| 56 | + 'barre_intertitre' => 'Turn into a {{{subheading}}}', |
|
| 57 | + 'barre_italic' => 'Put in {italics}', |
|
| 58 | + 'barre_lien' => 'Turn into a [hyperlink->http://...]', |
|
| 59 | + 'barre_lien_input' => 'Please enter the link address. You may use either an external URL (http://www.mysite.com) or reference another article on this site by simplying entering its number.', |
|
| 60 | + 'barre_note' => 'Turn into a [[Footnote]]', |
|
| 61 | + 'barre_paragraphe' => 'Create a paragraph', |
|
| 62 | + 'barre_quote' => '<quote>Quote a message</quote>', |
|
| 63 | + 'bouton_changer' => 'Change', |
|
| 64 | + 'bouton_chercher' => 'Search', |
|
| 65 | + 'bouton_choisir' => 'Select', |
|
| 66 | + 'bouton_deplacer' => 'Move', |
|
| 67 | + 'bouton_download' => 'Download', |
|
| 68 | + 'bouton_enregistrer' => 'Save', |
|
| 69 | + 'bouton_radio_desactiver_messagerie_interne' => 'Disable internal messaging', |
|
| 70 | + 'bouton_radio_envoi_annonces' => 'Send editorial announcements', |
|
| 71 | + 'bouton_radio_non_envoi_annonces' => 'Do not send any announcements', |
|
| 72 | + 'bouton_radio_non_envoi_liste_nouveautes' => 'Do not send latest news list', |
|
| 73 | + 'bouton_recharger_page' => 'reload this page', |
|
| 74 | + 'bouton_telecharger' => 'Upload', |
|
| 75 | + 'bouton_upload' => 'Upload', |
|
| 76 | + 'bouton_valider' => 'Submit', |
|
| 77 | 77 | |
| 78 | - // C |
|
| 79 | - 'cal_apresmidi' => 'afternoon (p.m.)', |
|
| 80 | - 'cal_jour_entier' => 'entire day', |
|
| 81 | - 'cal_matin' => 'morning (a.m.)', |
|
| 82 | - 'cal_par_jour' => 'daily calendar', |
|
| 83 | - 'cal_par_mois' => 'monthly calendar', |
|
| 84 | - 'cal_par_semaine' => 'weekly calendar', |
|
| 85 | - 'choix_couleur_interface' => 'colour', |
|
| 86 | - 'choix_interface' => 'choice of interface', |
|
| 87 | - 'colonne' => 'Column', |
|
| 88 | - 'confirm_changer_statut' => 'Warning: You are about to change this article’s status. Do you wish to continue?', |
|
| 89 | - 'correcte' => 'correct', |
|
| 78 | + // C |
|
| 79 | + 'cal_apresmidi' => 'afternoon (p.m.)', |
|
| 80 | + 'cal_jour_entier' => 'entire day', |
|
| 81 | + 'cal_matin' => 'morning (a.m.)', |
|
| 82 | + 'cal_par_jour' => 'daily calendar', |
|
| 83 | + 'cal_par_mois' => 'monthly calendar', |
|
| 84 | + 'cal_par_semaine' => 'weekly calendar', |
|
| 85 | + 'choix_couleur_interface' => 'colour', |
|
| 86 | + 'choix_interface' => 'choice of interface', |
|
| 87 | + 'colonne' => 'Column', |
|
| 88 | + 'confirm_changer_statut' => 'Warning: You are about to change this article’s status. Do you wish to continue?', |
|
| 89 | + 'correcte' => 'correct', |
|
| 90 | 90 | |
| 91 | - // D |
|
| 92 | - 'date_aujourdhui' => 'today', |
|
| 93 | - 'date_avant_jc' => 'B.C.', |
|
| 94 | - 'date_dans' => 'in @delai@', |
|
| 95 | - 'date_de_mois_1' => '@j@ @nommois@', |
|
| 96 | - 'date_de_mois_10' => '@j@ @nommois@', |
|
| 97 | - 'date_de_mois_11' => '@j@ @nommois@', |
|
| 98 | - 'date_de_mois_12' => '@j@ @nommois@', |
|
| 99 | - 'date_de_mois_2' => '@j@ @nommois@', |
|
| 100 | - 'date_de_mois_3' => '@j@ @nommois@', |
|
| 101 | - 'date_de_mois_4' => '@j@ @nommois@', |
|
| 102 | - 'date_de_mois_5' => '@j@ @nommois@', |
|
| 103 | - 'date_de_mois_6' => '@j@ @nommois@', |
|
| 104 | - 'date_de_mois_7' => '@j@ @nommois@', |
|
| 105 | - 'date_de_mois_8' => '@j@ @nommois@', |
|
| 106 | - 'date_de_mois_9' => '@j@ @nommois@', |
|
| 107 | - 'date_demain' => 'tomorrow', |
|
| 108 | - 'date_fmt_heures_minutes' => '@h@:@m@', |
|
| 109 | - 'date_fmt_heures_minutes_court' => '@h@:@m@', |
|
| 110 | - 'date_fmt_jour' => '@nomjour@ @jour@', |
|
| 111 | - 'date_fmt_jour_heure' => '@jour@ at @heure@', |
|
| 112 | - 'date_fmt_jour_heure_debut_fin' => '@jour@ from @heure_debut@ to @heure_fin@', |
|
| 113 | - 'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ from @heure_debut@@dtabbr@ to @dtend@@heure_fin@@dtabbr@', |
|
| 114 | - 'date_fmt_jour_mois' => '@jourmois@', |
|
| 115 | - 'date_fmt_jour_mois_annee' => '@jourmois@ @annee@', |
|
| 116 | - 'date_fmt_mois_annee' => '@nommois@ @annee@', |
|
| 117 | - 'date_fmt_nomjour' => '@nomjour@ @date@', |
|
| 118 | - 'date_fmt_nomjour_date' => 'on @nomjour@ @date@', |
|
| 119 | - 'date_fmt_periode' => 'From @date_debut@ to @date_fin@', |
|
| 120 | - 'date_fmt_periode_abbr' => 'From @dtart@@date_debut@@dtabbr@ to @dtend@@date_fin@@dtabbr@', |
|
| 121 | - 'date_fmt_periode_from' => 'From', |
|
| 122 | - 'date_fmt_periode_to' => 'to', |
|
| 123 | - 'date_fmt_saison_annee' => '@saison@ @annee@', |
|
| 124 | - 'date_heures' => 'hours', |
|
| 125 | - 'date_hier' => 'yesterday', |
|
| 126 | - 'date_il_y_a' => '@delai@ ago', |
|
| 127 | - 'date_jnum1' => '1', |
|
| 128 | - 'date_jnum10' => '10', |
|
| 129 | - 'date_jnum11' => '11', |
|
| 130 | - 'date_jnum12' => '12', |
|
| 131 | - 'date_jnum13' => '13', |
|
| 132 | - 'date_jnum14' => '14', |
|
| 133 | - 'date_jnum15' => '15', |
|
| 134 | - 'date_jnum16' => '16', |
|
| 135 | - 'date_jnum17' => '17', |
|
| 136 | - 'date_jnum18' => '18', |
|
| 137 | - 'date_jnum19' => '19', |
|
| 138 | - 'date_jnum2' => '2', |
|
| 139 | - 'date_jnum20' => '20', |
|
| 140 | - 'date_jnum21' => '21', |
|
| 141 | - 'date_jnum22' => '22', |
|
| 142 | - 'date_jnum23' => '23', |
|
| 143 | - 'date_jnum24' => '24', |
|
| 144 | - 'date_jnum25' => '25', |
|
| 145 | - 'date_jnum26' => '26', |
|
| 146 | - 'date_jnum27' => '27', |
|
| 147 | - 'date_jnum28' => '28', |
|
| 148 | - 'date_jnum29' => '29', |
|
| 149 | - 'date_jnum3' => '3', |
|
| 150 | - 'date_jnum30' => '30', |
|
| 151 | - 'date_jnum31' => '31', |
|
| 152 | - 'date_jnum4' => '4', |
|
| 153 | - 'date_jnum5' => '5', |
|
| 154 | - 'date_jnum6' => '6', |
|
| 155 | - 'date_jnum7' => '7', |
|
| 156 | - 'date_jnum8' => '8', |
|
| 157 | - 'date_jnum9' => '9', |
|
| 158 | - 'date_jour_1' => 'Sunday', |
|
| 159 | - 'date_jour_1_abbr' => 'Sun.', |
|
| 160 | - 'date_jour_1_initiale' => 'S.', |
|
| 161 | - 'date_jour_2' => 'Monday', |
|
| 162 | - 'date_jour_2_abbr' => 'Mon.', |
|
| 163 | - 'date_jour_2_initiale' => 'M.', |
|
| 164 | - 'date_jour_3' => 'Tuesday', |
|
| 165 | - 'date_jour_3_abbr' => 'Tue.', |
|
| 166 | - 'date_jour_3_initiale' => 'T.', |
|
| 167 | - 'date_jour_4' => 'Wednesday', |
|
| 168 | - 'date_jour_4_abbr' => 'Wed.', |
|
| 169 | - 'date_jour_4_initiale' => 'W.', |
|
| 170 | - 'date_jour_5' => 'Thursday', |
|
| 171 | - 'date_jour_5_abbr' => 'Thu.', |
|
| 172 | - 'date_jour_5_initiale' => 'T.', |
|
| 173 | - 'date_jour_6' => 'Friday', |
|
| 174 | - 'date_jour_6_abbr' => 'Fri.', |
|
| 175 | - 'date_jour_6_initiale' => 'F.', |
|
| 176 | - 'date_jour_7' => 'Saturday', |
|
| 177 | - 'date_jour_7_abbr' => 'Sat.', |
|
| 178 | - 'date_jour_7_initiale' => 'S.', |
|
| 179 | - 'date_jours' => 'days', |
|
| 180 | - 'date_minutes' => 'minutes', |
|
| 181 | - 'date_mois' => 'months', |
|
| 182 | - 'date_mois_1' => 'January', |
|
| 183 | - 'date_mois_10' => 'October', |
|
| 184 | - 'date_mois_10_abbr' => 'Oct', |
|
| 185 | - 'date_mois_11' => 'November', |
|
| 186 | - 'date_mois_11_abbr' => 'Nov', |
|
| 187 | - 'date_mois_12' => 'December', |
|
| 188 | - 'date_mois_12_abbr' => 'Dec', |
|
| 189 | - 'date_mois_1_abbr' => 'Jan', |
|
| 190 | - 'date_mois_2' => 'February', |
|
| 191 | - 'date_mois_2_abbr' => 'Feb', |
|
| 192 | - 'date_mois_3' => 'March', |
|
| 193 | - 'date_mois_3_abbr' => 'Mar', |
|
| 194 | - 'date_mois_4' => 'April', |
|
| 195 | - 'date_mois_4_abbr' => 'Apr', |
|
| 196 | - 'date_mois_5' => 'May', |
|
| 197 | - 'date_mois_5_abbr' => 'May', |
|
| 198 | - 'date_mois_6' => 'June', |
|
| 199 | - 'date_mois_6_abbr' => 'Jun', |
|
| 200 | - 'date_mois_7' => 'July', |
|
| 201 | - 'date_mois_7_abbr' => 'Jul', |
|
| 202 | - 'date_mois_8' => 'August', |
|
| 203 | - 'date_mois_8_abbr' => 'Aug', |
|
| 204 | - 'date_mois_9' => 'September', |
|
| 205 | - 'date_mois_9_abbr' => 'Sep', |
|
| 206 | - 'date_saison_1' => 'winter', |
|
| 207 | - 'date_saison_2' => 'spring', |
|
| 208 | - 'date_saison_3' => 'summer', |
|
| 209 | - 'date_saison_4' => 'autumn', |
|
| 210 | - 'date_secondes' => 'seconds', |
|
| 211 | - 'date_semaines' => 'weeks', |
|
| 212 | - 'date_un_mois' => 'month', |
|
| 213 | - 'date_une_heure' => 'hour', |
|
| 214 | - 'date_une_minute' => 'minute', |
|
| 215 | - 'date_une_seconde' => 'second', |
|
| 216 | - 'date_une_semaine' => 'week', |
|
| 217 | - 'dirs_commencer' => ' in order to start installation for real', |
|
| 218 | - 'dirs_preliminaire' => 'Preliminary: <b>Setting up access permissions</b>', |
|
| 219 | - 'dirs_probleme_droits' => 'Problem with access permissions', |
|
| 220 | - 'dirs_repertoires_absents' => '<p><b>The following directories were not found: </b></p><ul>@bad_dirs@.</ul> |
|
| 91 | + // D |
|
| 92 | + 'date_aujourdhui' => 'today', |
|
| 93 | + 'date_avant_jc' => 'B.C.', |
|
| 94 | + 'date_dans' => 'in @delai@', |
|
| 95 | + 'date_de_mois_1' => '@j@ @nommois@', |
|
| 96 | + 'date_de_mois_10' => '@j@ @nommois@', |
|
| 97 | + 'date_de_mois_11' => '@j@ @nommois@', |
|
| 98 | + 'date_de_mois_12' => '@j@ @nommois@', |
|
| 99 | + 'date_de_mois_2' => '@j@ @nommois@', |
|
| 100 | + 'date_de_mois_3' => '@j@ @nommois@', |
|
| 101 | + 'date_de_mois_4' => '@j@ @nommois@', |
|
| 102 | + 'date_de_mois_5' => '@j@ @nommois@', |
|
| 103 | + 'date_de_mois_6' => '@j@ @nommois@', |
|
| 104 | + 'date_de_mois_7' => '@j@ @nommois@', |
|
| 105 | + 'date_de_mois_8' => '@j@ @nommois@', |
|
| 106 | + 'date_de_mois_9' => '@j@ @nommois@', |
|
| 107 | + 'date_demain' => 'tomorrow', |
|
| 108 | + 'date_fmt_heures_minutes' => '@h@:@m@', |
|
| 109 | + 'date_fmt_heures_minutes_court' => '@h@:@m@', |
|
| 110 | + 'date_fmt_jour' => '@nomjour@ @jour@', |
|
| 111 | + 'date_fmt_jour_heure' => '@jour@ at @heure@', |
|
| 112 | + 'date_fmt_jour_heure_debut_fin' => '@jour@ from @heure_debut@ to @heure_fin@', |
|
| 113 | + 'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ from @heure_debut@@dtabbr@ to @dtend@@heure_fin@@dtabbr@', |
|
| 114 | + 'date_fmt_jour_mois' => '@jourmois@', |
|
| 115 | + 'date_fmt_jour_mois_annee' => '@jourmois@ @annee@', |
|
| 116 | + 'date_fmt_mois_annee' => '@nommois@ @annee@', |
|
| 117 | + 'date_fmt_nomjour' => '@nomjour@ @date@', |
|
| 118 | + 'date_fmt_nomjour_date' => 'on @nomjour@ @date@', |
|
| 119 | + 'date_fmt_periode' => 'From @date_debut@ to @date_fin@', |
|
| 120 | + 'date_fmt_periode_abbr' => 'From @dtart@@date_debut@@dtabbr@ to @dtend@@date_fin@@dtabbr@', |
|
| 121 | + 'date_fmt_periode_from' => 'From', |
|
| 122 | + 'date_fmt_periode_to' => 'to', |
|
| 123 | + 'date_fmt_saison_annee' => '@saison@ @annee@', |
|
| 124 | + 'date_heures' => 'hours', |
|
| 125 | + 'date_hier' => 'yesterday', |
|
| 126 | + 'date_il_y_a' => '@delai@ ago', |
|
| 127 | + 'date_jnum1' => '1', |
|
| 128 | + 'date_jnum10' => '10', |
|
| 129 | + 'date_jnum11' => '11', |
|
| 130 | + 'date_jnum12' => '12', |
|
| 131 | + 'date_jnum13' => '13', |
|
| 132 | + 'date_jnum14' => '14', |
|
| 133 | + 'date_jnum15' => '15', |
|
| 134 | + 'date_jnum16' => '16', |
|
| 135 | + 'date_jnum17' => '17', |
|
| 136 | + 'date_jnum18' => '18', |
|
| 137 | + 'date_jnum19' => '19', |
|
| 138 | + 'date_jnum2' => '2', |
|
| 139 | + 'date_jnum20' => '20', |
|
| 140 | + 'date_jnum21' => '21', |
|
| 141 | + 'date_jnum22' => '22', |
|
| 142 | + 'date_jnum23' => '23', |
|
| 143 | + 'date_jnum24' => '24', |
|
| 144 | + 'date_jnum25' => '25', |
|
| 145 | + 'date_jnum26' => '26', |
|
| 146 | + 'date_jnum27' => '27', |
|
| 147 | + 'date_jnum28' => '28', |
|
| 148 | + 'date_jnum29' => '29', |
|
| 149 | + 'date_jnum3' => '3', |
|
| 150 | + 'date_jnum30' => '30', |
|
| 151 | + 'date_jnum31' => '31', |
|
| 152 | + 'date_jnum4' => '4', |
|
| 153 | + 'date_jnum5' => '5', |
|
| 154 | + 'date_jnum6' => '6', |
|
| 155 | + 'date_jnum7' => '7', |
|
| 156 | + 'date_jnum8' => '8', |
|
| 157 | + 'date_jnum9' => '9', |
|
| 158 | + 'date_jour_1' => 'Sunday', |
|
| 159 | + 'date_jour_1_abbr' => 'Sun.', |
|
| 160 | + 'date_jour_1_initiale' => 'S.', |
|
| 161 | + 'date_jour_2' => 'Monday', |
|
| 162 | + 'date_jour_2_abbr' => 'Mon.', |
|
| 163 | + 'date_jour_2_initiale' => 'M.', |
|
| 164 | + 'date_jour_3' => 'Tuesday', |
|
| 165 | + 'date_jour_3_abbr' => 'Tue.', |
|
| 166 | + 'date_jour_3_initiale' => 'T.', |
|
| 167 | + 'date_jour_4' => 'Wednesday', |
|
| 168 | + 'date_jour_4_abbr' => 'Wed.', |
|
| 169 | + 'date_jour_4_initiale' => 'W.', |
|
| 170 | + 'date_jour_5' => 'Thursday', |
|
| 171 | + 'date_jour_5_abbr' => 'Thu.', |
|
| 172 | + 'date_jour_5_initiale' => 'T.', |
|
| 173 | + 'date_jour_6' => 'Friday', |
|
| 174 | + 'date_jour_6_abbr' => 'Fri.', |
|
| 175 | + 'date_jour_6_initiale' => 'F.', |
|
| 176 | + 'date_jour_7' => 'Saturday', |
|
| 177 | + 'date_jour_7_abbr' => 'Sat.', |
|
| 178 | + 'date_jour_7_initiale' => 'S.', |
|
| 179 | + 'date_jours' => 'days', |
|
| 180 | + 'date_minutes' => 'minutes', |
|
| 181 | + 'date_mois' => 'months', |
|
| 182 | + 'date_mois_1' => 'January', |
|
| 183 | + 'date_mois_10' => 'October', |
|
| 184 | + 'date_mois_10_abbr' => 'Oct', |
|
| 185 | + 'date_mois_11' => 'November', |
|
| 186 | + 'date_mois_11_abbr' => 'Nov', |
|
| 187 | + 'date_mois_12' => 'December', |
|
| 188 | + 'date_mois_12_abbr' => 'Dec', |
|
| 189 | + 'date_mois_1_abbr' => 'Jan', |
|
| 190 | + 'date_mois_2' => 'February', |
|
| 191 | + 'date_mois_2_abbr' => 'Feb', |
|
| 192 | + 'date_mois_3' => 'March', |
|
| 193 | + 'date_mois_3_abbr' => 'Mar', |
|
| 194 | + 'date_mois_4' => 'April', |
|
| 195 | + 'date_mois_4_abbr' => 'Apr', |
|
| 196 | + 'date_mois_5' => 'May', |
|
| 197 | + 'date_mois_5_abbr' => 'May', |
|
| 198 | + 'date_mois_6' => 'June', |
|
| 199 | + 'date_mois_6_abbr' => 'Jun', |
|
| 200 | + 'date_mois_7' => 'July', |
|
| 201 | + 'date_mois_7_abbr' => 'Jul', |
|
| 202 | + 'date_mois_8' => 'August', |
|
| 203 | + 'date_mois_8_abbr' => 'Aug', |
|
| 204 | + 'date_mois_9' => 'September', |
|
| 205 | + 'date_mois_9_abbr' => 'Sep', |
|
| 206 | + 'date_saison_1' => 'winter', |
|
| 207 | + 'date_saison_2' => 'spring', |
|
| 208 | + 'date_saison_3' => 'summer', |
|
| 209 | + 'date_saison_4' => 'autumn', |
|
| 210 | + 'date_secondes' => 'seconds', |
|
| 211 | + 'date_semaines' => 'weeks', |
|
| 212 | + 'date_un_mois' => 'month', |
|
| 213 | + 'date_une_heure' => 'hour', |
|
| 214 | + 'date_une_minute' => 'minute', |
|
| 215 | + 'date_une_seconde' => 'second', |
|
| 216 | + 'date_une_semaine' => 'week', |
|
| 217 | + 'dirs_commencer' => ' in order to start installation for real', |
|
| 218 | + 'dirs_preliminaire' => 'Preliminary: <b>Setting up access permissions</b>', |
|
| 219 | + 'dirs_probleme_droits' => 'Problem with access permissions', |
|
| 220 | + 'dirs_repertoires_absents' => '<p><b>The following directories were not found: </b></p><ul>@bad_dirs@.</ul> |
|
| 221 | 221 | <p>It is possible that this is due to inappropriate lower or upper case letters in directory names. |
| 222 | 222 | Please check that the case of the letters in the names of these directories match what is displayed |
| 223 | 223 | above. If they don’t, correct the directory names using your FTP client.</p> |
| 224 | 224 | <p>Once this is done, you can', |
| 225 | - 'dirs_repertoires_suivants' => '<p><b>The following directories do not have write permission: </b></p><ul>@bad_dirs@</ul> |
|
| 225 | + 'dirs_repertoires_suivants' => '<p><b>The following directories do not have write permission: </b></p><ul>@bad_dirs@</ul> |
|
| 226 | 226 | <p>To change this, use your FTP client to set access permissions for each |
| 227 | 227 | of these directories. The procedure is detailed in the installation guide.</p> |
| 228 | 228 | <p>Once you have done this, you can ', |
| 229 | - 'double_occurrence' => 'Two instances of @balise@', |
|
| 229 | + 'double_occurrence' => 'Two instances of @balise@', |
|
| 230 | 230 | |
| 231 | - // E |
|
| 232 | - 'en_cours' => 'processing', |
|
| 233 | - 'envoi_via_le_site' => 'Sent via the site', |
|
| 234 | - 'erreur' => 'Error', |
|
| 235 | - 'erreur_balise_non_fermee' => 'last tag not closed:', |
|
| 236 | - 'erreur_technique_ajaxform' => 'Ooops. An unexpected error prevented to submit the form. You can try again.', |
|
| 237 | - 'erreur_technique_enregistrement_champs' => 'A technical error prevented the right registration of the field @champs@.', |
|
| 238 | - 'erreur_technique_enregistrement_impossible' => 'A technical error prevented the registration.', |
|
| 239 | - 'erreur_texte' => 'error(s)', |
|
| 240 | - 'etape' => 'Step', |
|
| 231 | + // E |
|
| 232 | + 'en_cours' => 'processing', |
|
| 233 | + 'envoi_via_le_site' => 'Sent via the site', |
|
| 234 | + 'erreur' => 'Error', |
|
| 235 | + 'erreur_balise_non_fermee' => 'last tag not closed:', |
|
| 236 | + 'erreur_technique_ajaxform' => 'Ooops. An unexpected error prevented to submit the form. You can try again.', |
|
| 237 | + 'erreur_technique_enregistrement_champs' => 'A technical error prevented the right registration of the field @champs@.', |
|
| 238 | + 'erreur_technique_enregistrement_impossible' => 'A technical error prevented the registration.', |
|
| 239 | + 'erreur_texte' => 'error(s)', |
|
| 240 | + 'etape' => 'Step', |
|
| 241 | 241 | |
| 242 | - // F |
|
| 243 | - 'fichier_introuvable' => 'File not found: @fichier@', |
|
| 244 | - 'fonction_introuvable' => 'Function @fonction@() not found.', |
|
| 245 | - 'form_auteur_confirmation' => 'Please confirm your email address', |
|
| 246 | - 'form_auteur_email_modifie' => 'Your email address has been changed.', |
|
| 247 | - 'form_auteur_envoi_mail_confirmation' => 'A confirmation email has been sent to @email@. You must visit the URL mentioned in the message to validate your email address.', |
|
| 248 | - 'form_auteur_mail_confirmation' => 'Hello, |
|
| 242 | + // F |
|
| 243 | + 'fichier_introuvable' => 'File not found: @fichier@', |
|
| 244 | + 'fonction_introuvable' => 'Function @fonction@() not found.', |
|
| 245 | + 'form_auteur_confirmation' => 'Please confirm your email address', |
|
| 246 | + 'form_auteur_email_modifie' => 'Your email address has been changed.', |
|
| 247 | + 'form_auteur_envoi_mail_confirmation' => 'A confirmation email has been sent to @email@. You must visit the URL mentioned in the message to validate your email address.', |
|
| 248 | + 'form_auteur_mail_confirmation' => 'Hello, |
|
| 249 | 249 | |
| 250 | 250 | You have asked to change your email address. |
| 251 | 251 | To confirm your new address, you need to connect to |
@@ -253,347 +253,347 @@ discard block |
||
| 253 | 253 | |
| 254 | 254 | @url@ |
| 255 | 255 | ', |
| 256 | - 'form_deja_inscrit' => 'You are already registered.', |
|
| 257 | - 'form_email_non_valide' => 'Your email address is not valid.', |
|
| 258 | - 'form_forum_access_refuse' => 'You no longer have access to this site.', |
|
| 259 | - 'form_forum_bonjour' => 'Hello @nom@,', |
|
| 260 | - 'form_forum_confirmer_email' => 'To confirm your email address, follow this link: @url_confirm@', |
|
| 261 | - 'form_forum_email_deja_enregistre' => 'This email address is already registered. Enter your usual password.', |
|
| 262 | - 'form_forum_identifiant_mail' => 'Your new identifier has just been emailed to you.', |
|
| 263 | - 'form_forum_identifiants' => 'Personal identifiers', |
|
| 264 | - 'form_forum_indiquer_nom_email' => 'Enter your name and email address here. You will receive your personal identifier shortly by email.', |
|
| 265 | - 'form_forum_login' => 'login:', |
|
| 266 | - 'form_forum_message_auto' => '(this is an automated message)', |
|
| 267 | - 'form_forum_pass' => 'password:', |
|
| 268 | - 'form_forum_probleme_mail' => 'Mail problem: the identifier could not be sent.', |
|
| 269 | - 'form_forum_voici1' => 'Here are your identifiers. You may now participate on the site |
|
| 256 | + 'form_deja_inscrit' => 'You are already registered.', |
|
| 257 | + 'form_email_non_valide' => 'Your email address is not valid.', |
|
| 258 | + 'form_forum_access_refuse' => 'You no longer have access to this site.', |
|
| 259 | + 'form_forum_bonjour' => 'Hello @nom@,', |
|
| 260 | + 'form_forum_confirmer_email' => 'To confirm your email address, follow this link: @url_confirm@', |
|
| 261 | + 'form_forum_email_deja_enregistre' => 'This email address is already registered. Enter your usual password.', |
|
| 262 | + 'form_forum_identifiant_mail' => 'Your new identifier has just been emailed to you.', |
|
| 263 | + 'form_forum_identifiants' => 'Personal identifiers', |
|
| 264 | + 'form_forum_indiquer_nom_email' => 'Enter your name and email address here. You will receive your personal identifier shortly by email.', |
|
| 265 | + 'form_forum_login' => 'login:', |
|
| 266 | + 'form_forum_message_auto' => '(this is an automated message)', |
|
| 267 | + 'form_forum_pass' => 'password:', |
|
| 268 | + 'form_forum_probleme_mail' => 'Mail problem: the identifier could not be sent.', |
|
| 269 | + 'form_forum_voici1' => 'Here are your identifiers. You may now participate on the site |
|
| 270 | 270 | "@nom_site_spip@" (@adresse_site@):', |
| 271 | - 'form_forum_voici2' => 'Here are your identifiers for submitting articles to |
|
| 271 | + 'form_forum_voici2' => 'Here are your identifiers for submitting articles to |
|
| 272 | 272 | the site "@nom_site_spip@" (@adresse_login@):', |
| 273 | - 'form_indiquer_email' => 'Please enter your email address.', |
|
| 274 | - 'form_indiquer_nom' => 'Please enter your name.', |
|
| 275 | - 'form_indiquer_nom_site' => 'Please enter the name of your site.', |
|
| 276 | - 'form_pet_deja_enregistre' => 'This site is already registered', |
|
| 277 | - 'form_pet_signature_pasprise' => 'Your signature has been ignored.', |
|
| 278 | - 'form_prop_confirmer_envoi' => 'Confirm send', |
|
| 279 | - 'form_prop_description' => 'Description/comment', |
|
| 280 | - 'form_prop_enregistre' => 'Your suggestion has been recorded. It will appear online after being validated by the administrators of this site.', |
|
| 281 | - 'form_prop_envoyer' => 'Send a message', |
|
| 282 | - 'form_prop_indiquer_email' => 'Please enter a valid email address', |
|
| 283 | - 'form_prop_indiquer_nom_site' => 'Please enter the site’s name.', |
|
| 284 | - 'form_prop_indiquer_sujet' => 'Please enter a subject', |
|
| 285 | - 'form_prop_message_envoye' => 'Message sent', |
|
| 286 | - 'form_prop_non_enregistre' => 'Your suggestion has not been recorded.', |
|
| 287 | - 'form_prop_sujet' => 'Subject', |
|
| 288 | - 'form_prop_url_site' => 'Site URL', |
|
| 289 | - 'format_date_attendu' => 'Enter a date in jj/mm/aaaa format.', |
|
| 290 | - 'format_date_incorrecte' => 'The date or its format is incorrect.', |
|
| 291 | - 'format_heure_attendu' => 'Enter a time in hh:mm format.', |
|
| 292 | - 'format_heure_incorrecte' => 'The hour or its format is incorrect.', |
|
| 293 | - 'forum_non_inscrit' => 'Either you are not registered, or the address or password are wrong.', |
|
| 294 | - 'forum_par_auteur' => 'by @auteur@', |
|
| 295 | - 'forum_titre_erreur' => 'Error...', |
|
| 273 | + 'form_indiquer_email' => 'Please enter your email address.', |
|
| 274 | + 'form_indiquer_nom' => 'Please enter your name.', |
|
| 275 | + 'form_indiquer_nom_site' => 'Please enter the name of your site.', |
|
| 276 | + 'form_pet_deja_enregistre' => 'This site is already registered', |
|
| 277 | + 'form_pet_signature_pasprise' => 'Your signature has been ignored.', |
|
| 278 | + 'form_prop_confirmer_envoi' => 'Confirm send', |
|
| 279 | + 'form_prop_description' => 'Description/comment', |
|
| 280 | + 'form_prop_enregistre' => 'Your suggestion has been recorded. It will appear online after being validated by the administrators of this site.', |
|
| 281 | + 'form_prop_envoyer' => 'Send a message', |
|
| 282 | + 'form_prop_indiquer_email' => 'Please enter a valid email address', |
|
| 283 | + 'form_prop_indiquer_nom_site' => 'Please enter the site’s name.', |
|
| 284 | + 'form_prop_indiquer_sujet' => 'Please enter a subject', |
|
| 285 | + 'form_prop_message_envoye' => 'Message sent', |
|
| 286 | + 'form_prop_non_enregistre' => 'Your suggestion has not been recorded.', |
|
| 287 | + 'form_prop_sujet' => 'Subject', |
|
| 288 | + 'form_prop_url_site' => 'Site URL', |
|
| 289 | + 'format_date_attendu' => 'Enter a date in jj/mm/aaaa format.', |
|
| 290 | + 'format_date_incorrecte' => 'The date or its format is incorrect.', |
|
| 291 | + 'format_heure_attendu' => 'Enter a time in hh:mm format.', |
|
| 292 | + 'format_heure_incorrecte' => 'The hour or its format is incorrect.', |
|
| 293 | + 'forum_non_inscrit' => 'Either you are not registered, or the address or password are wrong.', |
|
| 294 | + 'forum_par_auteur' => 'by @auteur@', |
|
| 295 | + 'forum_titre_erreur' => 'Error...', |
|
| 296 | 296 | |
| 297 | - // I |
|
| 298 | - 'ical_texte_rss_articles' => 'The site’s backend file for articles is:', |
|
| 299 | - 'ical_texte_rss_articles2' => 'You can also get backend files for individual sections on the site:', |
|
| 300 | - 'ical_texte_rss_breves' => 'Furthermore, there is a file containing the site’s news items. By selecting a section number, you can choose to get news items in that section only.', |
|
| 301 | - 'icone_a_suivre' => 'Launch pad', |
|
| 302 | - 'icone_admin_site' => 'Site administration', |
|
| 303 | - 'icone_agenda' => 'Calendar', |
|
| 304 | - 'icone_aide_ligne' => 'Help', |
|
| 305 | - 'icone_articles' => 'Articles', |
|
| 306 | - 'icone_auteurs' => 'Authors', |
|
| 307 | - 'icone_brouteur' => 'Quick browsing', |
|
| 308 | - 'icone_configuration_site' => 'Configuration', |
|
| 309 | - 'icone_configurer_site' => 'Configure your site', |
|
| 310 | - 'icone_creer_nouvel_auteur' => 'Create a new author', |
|
| 311 | - 'icone_creer_rubrique' => 'Create a section', |
|
| 312 | - 'icone_creer_sous_rubrique' => 'Create a subsection', |
|
| 313 | - 'icone_deconnecter' => 'Log out', |
|
| 314 | - 'icone_discussions' => 'Discussions', |
|
| 315 | - 'icone_doc_rubrique' => 'Documents attached', |
|
| 316 | - 'icone_ecrire_article' => 'Write a new article', |
|
| 317 | - 'icone_edition_site' => 'Edit site', |
|
| 318 | - 'icone_gestion_langues' => 'Language options', |
|
| 319 | - 'icone_informations_personnelles' => 'Personal information', |
|
| 320 | - 'icone_interface_complet' => 'full interface', |
|
| 321 | - 'icone_interface_simple' => 'Simplified interface', |
|
| 322 | - 'icone_maintenance_site' => 'Site maintenance', |
|
| 323 | - 'icone_messagerie_personnelle' => 'Private messages', |
|
| 324 | - 'icone_repartition_debut' => 'Show distribution from the start', |
|
| 325 | - 'icone_rubriques' => 'Sections', |
|
| 326 | - 'icone_sauver_site' => 'Site backup', |
|
| 327 | - 'icone_site_entier' => 'The entire site', |
|
| 328 | - 'icone_sites_references' => 'Referenced sites', |
|
| 329 | - 'icone_statistiques' => 'Site statistics', |
|
| 330 | - 'icone_suivi_activite' => 'Follow site activity', |
|
| 331 | - 'icone_suivi_actualite' => 'Site statistics', |
|
| 332 | - 'icone_suivi_pettions' => 'Manage petitions', |
|
| 333 | - 'icone_suivi_revisions' => 'Article revisions', |
|
| 334 | - 'icone_supprimer_document' => 'Delete this document', |
|
| 335 | - 'icone_supprimer_image' => 'Delete this image', |
|
| 336 | - 'icone_tous_articles' => 'All your articles', |
|
| 337 | - 'icone_tous_auteur' => 'All authors', |
|
| 338 | - 'icone_tous_visiteur' => 'All visitors', |
|
| 339 | - 'icone_visiter_site' => 'View the public site', |
|
| 340 | - 'icone_voir_en_ligne' => 'View online', |
|
| 341 | - 'img_indisponible' => 'image unavailable', |
|
| 342 | - 'impossible' => 'impossible', |
|
| 343 | - 'info_a_suivre' => 'LAUNCH PAD»', |
|
| 344 | - 'info_acces_interdit' => 'Access forbidden', |
|
| 345 | - 'info_acces_refuse' => 'Access denied', |
|
| 346 | - 'info_action' => 'Action: @action@', |
|
| 347 | - 'info_administrer_rubriques' => 'You can manage this section and any subsections', |
|
| 348 | - 'info_adresse_non_indiquee' => 'You did not specify an address to test!', |
|
| 349 | - 'info_aide' => 'HELP:', |
|
| 350 | - 'info_ajouter_mot' => 'Add keyword', |
|
| 351 | - 'info_annonce' => 'ANNOUNCEMENT', |
|
| 352 | - 'info_annonces_generales' => 'General announcements:', |
|
| 353 | - 'info_article_propose' => 'Article submitted', |
|
| 354 | - 'info_article_publie' => 'Article published', |
|
| 355 | - 'info_article_redaction' => 'Article in progress', |
|
| 356 | - 'info_article_refuse' => 'Article rejected', |
|
| 357 | - 'info_article_supprime' => 'Article deleted', |
|
| 358 | - 'info_articles' => 'Articles', |
|
| 359 | - 'info_articles_a_valider' => 'Articles awaiting validation', |
|
| 360 | - 'info_articles_nb' => '@nb@ articles', |
|
| 361 | - 'info_articles_proposes' => 'Articles submitted', |
|
| 362 | - 'info_articles_un' => '1 article', |
|
| 363 | - 'info_auteurs_nombre' => 'author(s):', |
|
| 364 | - 'info_authentification_ftp' => 'Authentication (by FTP).', |
|
| 365 | - 'info_breves_2' => 'news', |
|
| 366 | - 'info_breves_nb' => '@nb@ news items', |
|
| 367 | - 'info_breves_un' => '1 news item', |
|
| 368 | - 'info_connexion_refusee' => 'Connection denied', |
|
| 369 | - 'info_contact_developpeur' => 'Please contact a developer.', |
|
| 370 | - 'info_contenance' => 'This site contains:', |
|
| 371 | - 'info_contribution' => 'contributions', |
|
| 372 | - 'info_copyright' => '@spip@ is free software distributed @lien_gpl@.', |
|
| 373 | - 'info_copyright_doc' => 'For more visit <a href="@spipnet@">@spipnet_affiche@</a>.', |
|
| 374 | - 'info_copyright_gpl' => 'under the GPL license', |
|
| 375 | - 'info_cours_edition' => 'In progress', |
|
| 376 | - 'info_creer_repertoire' => 'Please create a file or a directory called:', |
|
| 377 | - 'info_creer_repertoire_2' => 'inside the sub-directory <b>@repertoire@</b>, then', |
|
| 378 | - 'info_creer_vignette' => 'automatic thumbnail creation', |
|
| 379 | - 'info_creerdansrubrique_non_autorise' => 'You don’t have sufficient rights to create content in this section', |
|
| 380 | - 'info_deplier' => 'Unfold', |
|
| 381 | - 'info_descriptif_nombre' => 'description(s):', |
|
| 382 | - 'info_description' => 'Description:', |
|
| 383 | - 'info_description_2' => 'Description:', |
|
| 384 | - 'info_dimension' => 'Size:', |
|
| 385 | - 'info_documents_nb' => '@nb@ documents', |
|
| 386 | - 'info_documents_un' => '1 document', |
|
| 387 | - 'info_ecire_message_prive' => 'Write a private message', |
|
| 388 | - 'info_email_invalide' => 'Invalid email address.', |
|
| 389 | - 'info_en_cours_validation' => 'Your articles in progress', |
|
| 390 | - 'info_en_ligne' => 'Online now:', |
|
| 391 | - 'info_envoyer_message_prive' => 'Send a private message to this author', |
|
| 392 | - 'info_erreur_requete' => 'Error in query:', |
|
| 393 | - 'info_erreur_squelette2' => 'No <b>@fichier@</b> template available ...', |
|
| 394 | - 'info_erreur_systeme' => 'System error (errno @errsys@)', |
|
| 395 | - 'info_erreur_systeme2' => 'The hard disk may be full or the database damaged. <br /> |
|
| 297 | + // I |
|
| 298 | + 'ical_texte_rss_articles' => 'The site’s backend file for articles is:', |
|
| 299 | + 'ical_texte_rss_articles2' => 'You can also get backend files for individual sections on the site:', |
|
| 300 | + 'ical_texte_rss_breves' => 'Furthermore, there is a file containing the site’s news items. By selecting a section number, you can choose to get news items in that section only.', |
|
| 301 | + 'icone_a_suivre' => 'Launch pad', |
|
| 302 | + 'icone_admin_site' => 'Site administration', |
|
| 303 | + 'icone_agenda' => 'Calendar', |
|
| 304 | + 'icone_aide_ligne' => 'Help', |
|
| 305 | + 'icone_articles' => 'Articles', |
|
| 306 | + 'icone_auteurs' => 'Authors', |
|
| 307 | + 'icone_brouteur' => 'Quick browsing', |
|
| 308 | + 'icone_configuration_site' => 'Configuration', |
|
| 309 | + 'icone_configurer_site' => 'Configure your site', |
|
| 310 | + 'icone_creer_nouvel_auteur' => 'Create a new author', |
|
| 311 | + 'icone_creer_rubrique' => 'Create a section', |
|
| 312 | + 'icone_creer_sous_rubrique' => 'Create a subsection', |
|
| 313 | + 'icone_deconnecter' => 'Log out', |
|
| 314 | + 'icone_discussions' => 'Discussions', |
|
| 315 | + 'icone_doc_rubrique' => 'Documents attached', |
|
| 316 | + 'icone_ecrire_article' => 'Write a new article', |
|
| 317 | + 'icone_edition_site' => 'Edit site', |
|
| 318 | + 'icone_gestion_langues' => 'Language options', |
|
| 319 | + 'icone_informations_personnelles' => 'Personal information', |
|
| 320 | + 'icone_interface_complet' => 'full interface', |
|
| 321 | + 'icone_interface_simple' => 'Simplified interface', |
|
| 322 | + 'icone_maintenance_site' => 'Site maintenance', |
|
| 323 | + 'icone_messagerie_personnelle' => 'Private messages', |
|
| 324 | + 'icone_repartition_debut' => 'Show distribution from the start', |
|
| 325 | + 'icone_rubriques' => 'Sections', |
|
| 326 | + 'icone_sauver_site' => 'Site backup', |
|
| 327 | + 'icone_site_entier' => 'The entire site', |
|
| 328 | + 'icone_sites_references' => 'Referenced sites', |
|
| 329 | + 'icone_statistiques' => 'Site statistics', |
|
| 330 | + 'icone_suivi_activite' => 'Follow site activity', |
|
| 331 | + 'icone_suivi_actualite' => 'Site statistics', |
|
| 332 | + 'icone_suivi_pettions' => 'Manage petitions', |
|
| 333 | + 'icone_suivi_revisions' => 'Article revisions', |
|
| 334 | + 'icone_supprimer_document' => 'Delete this document', |
|
| 335 | + 'icone_supprimer_image' => 'Delete this image', |
|
| 336 | + 'icone_tous_articles' => 'All your articles', |
|
| 337 | + 'icone_tous_auteur' => 'All authors', |
|
| 338 | + 'icone_tous_visiteur' => 'All visitors', |
|
| 339 | + 'icone_visiter_site' => 'View the public site', |
|
| 340 | + 'icone_voir_en_ligne' => 'View online', |
|
| 341 | + 'img_indisponible' => 'image unavailable', |
|
| 342 | + 'impossible' => 'impossible', |
|
| 343 | + 'info_a_suivre' => 'LAUNCH PAD»', |
|
| 344 | + 'info_acces_interdit' => 'Access forbidden', |
|
| 345 | + 'info_acces_refuse' => 'Access denied', |
|
| 346 | + 'info_action' => 'Action: @action@', |
|
| 347 | + 'info_administrer_rubriques' => 'You can manage this section and any subsections', |
|
| 348 | + 'info_adresse_non_indiquee' => 'You did not specify an address to test!', |
|
| 349 | + 'info_aide' => 'HELP:', |
|
| 350 | + 'info_ajouter_mot' => 'Add keyword', |
|
| 351 | + 'info_annonce' => 'ANNOUNCEMENT', |
|
| 352 | + 'info_annonces_generales' => 'General announcements:', |
|
| 353 | + 'info_article_propose' => 'Article submitted', |
|
| 354 | + 'info_article_publie' => 'Article published', |
|
| 355 | + 'info_article_redaction' => 'Article in progress', |
|
| 356 | + 'info_article_refuse' => 'Article rejected', |
|
| 357 | + 'info_article_supprime' => 'Article deleted', |
|
| 358 | + 'info_articles' => 'Articles', |
|
| 359 | + 'info_articles_a_valider' => 'Articles awaiting validation', |
|
| 360 | + 'info_articles_nb' => '@nb@ articles', |
|
| 361 | + 'info_articles_proposes' => 'Articles submitted', |
|
| 362 | + 'info_articles_un' => '1 article', |
|
| 363 | + 'info_auteurs_nombre' => 'author(s):', |
|
| 364 | + 'info_authentification_ftp' => 'Authentication (by FTP).', |
|
| 365 | + 'info_breves_2' => 'news', |
|
| 366 | + 'info_breves_nb' => '@nb@ news items', |
|
| 367 | + 'info_breves_un' => '1 news item', |
|
| 368 | + 'info_connexion_refusee' => 'Connection denied', |
|
| 369 | + 'info_contact_developpeur' => 'Please contact a developer.', |
|
| 370 | + 'info_contenance' => 'This site contains:', |
|
| 371 | + 'info_contribution' => 'contributions', |
|
| 372 | + 'info_copyright' => '@spip@ is free software distributed @lien_gpl@.', |
|
| 373 | + 'info_copyright_doc' => 'For more visit <a href="@spipnet@">@spipnet_affiche@</a>.', |
|
| 374 | + 'info_copyright_gpl' => 'under the GPL license', |
|
| 375 | + 'info_cours_edition' => 'In progress', |
|
| 376 | + 'info_creer_repertoire' => 'Please create a file or a directory called:', |
|
| 377 | + 'info_creer_repertoire_2' => 'inside the sub-directory <b>@repertoire@</b>, then', |
|
| 378 | + 'info_creer_vignette' => 'automatic thumbnail creation', |
|
| 379 | + 'info_creerdansrubrique_non_autorise' => 'You don’t have sufficient rights to create content in this section', |
|
| 380 | + 'info_deplier' => 'Unfold', |
|
| 381 | + 'info_descriptif_nombre' => 'description(s):', |
|
| 382 | + 'info_description' => 'Description:', |
|
| 383 | + 'info_description_2' => 'Description:', |
|
| 384 | + 'info_dimension' => 'Size:', |
|
| 385 | + 'info_documents_nb' => '@nb@ documents', |
|
| 386 | + 'info_documents_un' => '1 document', |
|
| 387 | + 'info_ecire_message_prive' => 'Write a private message', |
|
| 388 | + 'info_email_invalide' => 'Invalid email address.', |
|
| 389 | + 'info_en_cours_validation' => 'Your articles in progress', |
|
| 390 | + 'info_en_ligne' => 'Online now:', |
|
| 391 | + 'info_envoyer_message_prive' => 'Send a private message to this author', |
|
| 392 | + 'info_erreur_requete' => 'Error in query:', |
|
| 393 | + 'info_erreur_squelette2' => 'No <b>@fichier@</b> template available ...', |
|
| 394 | + 'info_erreur_systeme' => 'System error (errno @errsys@)', |
|
| 395 | + 'info_erreur_systeme2' => 'The hard disk may be full or the database damaged. <br /> |
|
| 396 | 396 | <span style="color:red;">Try <a href=\'@script@\'>repairing the database</a>, or contact your service provider.</span>', |
| 397 | - 'info_fini' => 'Done!', |
|
| 398 | - 'info_format_image' => 'Image format to be used for vignettes: @gd_formats@.', |
|
| 399 | - 'info_format_non_defini' => 'undefined format', |
|
| 400 | - 'info_grand_ecran' => 'Large display', |
|
| 401 | - 'info_image_aide' => 'HELP', |
|
| 402 | - 'info_image_process_titre' => 'How to create thumbnails', |
|
| 403 | - 'info_impossible_lire_page' => '<b>Error!</b> The page <tt><html>@test_proxy@</html></tt> cannot be viewed through the proxy', |
|
| 404 | - 'info_installation_systeme_publication' => 'Installing publication system...', |
|
| 405 | - 'info_installer_documents' => 'You can automatically install all documents in the folder @upload@.', |
|
| 406 | - 'info_installer_ftp' => 'As an administrator, you can install files via FTP to the folder @upload@ in order to select them directly from here.', |
|
| 407 | - 'info_installer_images' => 'You can install images in the formats JPEG, GIF, and PNG.', |
|
| 408 | - 'info_installer_images_dossier' => 'Install images in folder @upload@ if you want to select them here.', |
|
| 409 | - 'info_interface_complete' => 'full interface', |
|
| 410 | - 'info_interface_simple' => 'Simplified interface', |
|
| 411 | - 'info_joindre_document_article' => 'You can attach the following types of document to your article', |
|
| 412 | - 'info_joindre_document_rubrique' => 'You can add documents of the following types to this section ', |
|
| 413 | - 'info_joindre_documents_article' => 'You can attach documents of the following types to your article:', |
|
| 414 | - 'info_l_article' => 'the article', |
|
| 415 | - 'info_la_breve' => 'the news item', |
|
| 416 | - 'info_la_rubrique' => 'the section', |
|
| 417 | - 'info_langue_principale' => 'Main language for site', |
|
| 418 | - 'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ pixels', |
|
| 419 | - 'info_les_auteurs_1' => 'by @les_auteurs@', |
|
| 420 | - 'info_logo_format_interdit' => 'Only logos in these formats @formats@ are allowed.', |
|
| 421 | - 'info_logo_max_poids' => 'Logos must be less than @maxi@ (this file is @actuel@).', |
|
| 422 | - 'info_mail_fournisseur' => '[email protected]', |
|
| 423 | - 'info_message_2' => 'MESSAGE', |
|
| 424 | - 'info_message_supprime' => 'MESSAGE DELETED', |
|
| 425 | - 'info_messages_nb' => '@nb@ messages', |
|
| 426 | - 'info_messages_un' => '1 message', |
|
| 427 | - 'info_mise_en_ligne' => 'Published on:', |
|
| 428 | - 'info_modification_parametres_securite' => 'modifying security parameters', |
|
| 429 | - 'info_mois_courant' => 'During the month:', |
|
| 430 | - 'info_mot_cle_ajoute' => 'The following keyword was added to', |
|
| 431 | - 'info_multi_herit' => 'Default language', |
|
| 432 | - 'info_multi_langues_soulignees' => 'The <u>languages underlined</u> provide partial or total translations for all the interface texts. If you select these languages, many elements of the public site (dates, forms) will be translated automatically. As for the languages that are not underlined, those elements will be displayed using the site’s default language.', |
|
| 433 | - 'info_multilinguisme' => 'Multilingual', |
|
| 434 | - 'info_nom_non_utilisateurs_connectes' => 'Your name does not appear in the list of users online.', |
|
| 435 | - 'info_nom_utilisateurs_connectes' => 'Your name appears in the list of users online.', |
|
| 436 | - 'info_nombre_en_ligne' => 'Online now:', |
|
| 437 | - 'info_non_resultat' => 'No results for "@cherche_mot@"', |
|
| 438 | - 'info_non_utilisation_messagerie' => 'You are not using private messaging on this site.', |
|
| 439 | - 'info_nouveau_message' => 'YOU HAVE A NEW MESSAGE', |
|
| 440 | - 'info_nouveaux_messages' => 'YOU HAVE @total_messages@ NEW MESSAGES', |
|
| 441 | - 'info_numero_abbreviation' => 'No', |
|
| 442 | - 'info_obligatoire' => 'This information is required', |
|
| 443 | - 'info_page_actuelle' => 'Actual page', |
|
| 444 | - 'info_pense_bete' => 'MEMO', |
|
| 445 | - 'info_petit_ecran' => 'Small display', |
|
| 446 | - 'info_petition_close' => 'Petition closed', |
|
| 447 | - 'info_pixels' => 'pixels', |
|
| 448 | - 'info_plusieurs_mots_trouves' => 'Several keywords were found for "@cherche_mot@":', |
|
| 449 | - 'info_portfolio_automatique' => 'Automated portfolio:', |
|
| 450 | - 'info_premier_resultat' => '[First @debut_limit@ results out of @total@]', |
|
| 451 | - 'info_premier_resultat_sur' => '[First @debut_limit@ results out of @total@]', |
|
| 452 | - 'info_propose_1' => '[@nom_site_spip@] Submitted: @titre@', |
|
| 453 | - 'info_propose_2' => 'Article submitted |
|
| 397 | + 'info_fini' => 'Done!', |
|
| 398 | + 'info_format_image' => 'Image format to be used for vignettes: @gd_formats@.', |
|
| 399 | + 'info_format_non_defini' => 'undefined format', |
|
| 400 | + 'info_grand_ecran' => 'Large display', |
|
| 401 | + 'info_image_aide' => 'HELP', |
|
| 402 | + 'info_image_process_titre' => 'How to create thumbnails', |
|
| 403 | + 'info_impossible_lire_page' => '<b>Error!</b> The page <tt><html>@test_proxy@</html></tt> cannot be viewed through the proxy', |
|
| 404 | + 'info_installation_systeme_publication' => 'Installing publication system...', |
|
| 405 | + 'info_installer_documents' => 'You can automatically install all documents in the folder @upload@.', |
|
| 406 | + 'info_installer_ftp' => 'As an administrator, you can install files via FTP to the folder @upload@ in order to select them directly from here.', |
|
| 407 | + 'info_installer_images' => 'You can install images in the formats JPEG, GIF, and PNG.', |
|
| 408 | + 'info_installer_images_dossier' => 'Install images in folder @upload@ if you want to select them here.', |
|
| 409 | + 'info_interface_complete' => 'full interface', |
|
| 410 | + 'info_interface_simple' => 'Simplified interface', |
|
| 411 | + 'info_joindre_document_article' => 'You can attach the following types of document to your article', |
|
| 412 | + 'info_joindre_document_rubrique' => 'You can add documents of the following types to this section ', |
|
| 413 | + 'info_joindre_documents_article' => 'You can attach documents of the following types to your article:', |
|
| 414 | + 'info_l_article' => 'the article', |
|
| 415 | + 'info_la_breve' => 'the news item', |
|
| 416 | + 'info_la_rubrique' => 'the section', |
|
| 417 | + 'info_langue_principale' => 'Main language for site', |
|
| 418 | + 'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ pixels', |
|
| 419 | + 'info_les_auteurs_1' => 'by @les_auteurs@', |
|
| 420 | + 'info_logo_format_interdit' => 'Only logos in these formats @formats@ are allowed.', |
|
| 421 | + 'info_logo_max_poids' => 'Logos must be less than @maxi@ (this file is @actuel@).', |
|
| 422 | + 'info_mail_fournisseur' => '[email protected]', |
|
| 423 | + 'info_message_2' => 'MESSAGE', |
|
| 424 | + 'info_message_supprime' => 'MESSAGE DELETED', |
|
| 425 | + 'info_messages_nb' => '@nb@ messages', |
|
| 426 | + 'info_messages_un' => '1 message', |
|
| 427 | + 'info_mise_en_ligne' => 'Published on:', |
|
| 428 | + 'info_modification_parametres_securite' => 'modifying security parameters', |
|
| 429 | + 'info_mois_courant' => 'During the month:', |
|
| 430 | + 'info_mot_cle_ajoute' => 'The following keyword was added to', |
|
| 431 | + 'info_multi_herit' => 'Default language', |
|
| 432 | + 'info_multi_langues_soulignees' => 'The <u>languages underlined</u> provide partial or total translations for all the interface texts. If you select these languages, many elements of the public site (dates, forms) will be translated automatically. As for the languages that are not underlined, those elements will be displayed using the site’s default language.', |
|
| 433 | + 'info_multilinguisme' => 'Multilingual', |
|
| 434 | + 'info_nom_non_utilisateurs_connectes' => 'Your name does not appear in the list of users online.', |
|
| 435 | + 'info_nom_utilisateurs_connectes' => 'Your name appears in the list of users online.', |
|
| 436 | + 'info_nombre_en_ligne' => 'Online now:', |
|
| 437 | + 'info_non_resultat' => 'No results for "@cherche_mot@"', |
|
| 438 | + 'info_non_utilisation_messagerie' => 'You are not using private messaging on this site.', |
|
| 439 | + 'info_nouveau_message' => 'YOU HAVE A NEW MESSAGE', |
|
| 440 | + 'info_nouveaux_messages' => 'YOU HAVE @total_messages@ NEW MESSAGES', |
|
| 441 | + 'info_numero_abbreviation' => 'No', |
|
| 442 | + 'info_obligatoire' => 'This information is required', |
|
| 443 | + 'info_page_actuelle' => 'Actual page', |
|
| 444 | + 'info_pense_bete' => 'MEMO', |
|
| 445 | + 'info_petit_ecran' => 'Small display', |
|
| 446 | + 'info_petition_close' => 'Petition closed', |
|
| 447 | + 'info_pixels' => 'pixels', |
|
| 448 | + 'info_plusieurs_mots_trouves' => 'Several keywords were found for "@cherche_mot@":', |
|
| 449 | + 'info_portfolio_automatique' => 'Automated portfolio:', |
|
| 450 | + 'info_premier_resultat' => '[First @debut_limit@ results out of @total@]', |
|
| 451 | + 'info_premier_resultat_sur' => '[First @debut_limit@ results out of @total@]', |
|
| 452 | + 'info_propose_1' => '[@nom_site_spip@] Submitted: @titre@', |
|
| 453 | + 'info_propose_2' => 'Article submitted |
|
| 454 | 454 | -----------------', |
| 455 | - 'info_propose_3' => 'The article "@titre@" has been submitted for publication.', |
|
| 456 | - 'info_propose_4' => 'You are invited to review it and give your opinion', |
|
| 457 | - 'info_propose_5' => 'in the associated forum. It is available here:', |
|
| 458 | - 'info_publie_01' => 'The article "@titre@" was validated by @connect_nom@.', |
|
| 459 | - 'info_publie_1' => '[@nom_site_spip@] PUBLISHED: @titre@', |
|
| 460 | - 'info_publie_2' => 'Article published |
|
| 455 | + 'info_propose_3' => 'The article "@titre@" has been submitted for publication.', |
|
| 456 | + 'info_propose_4' => 'You are invited to review it and give your opinion', |
|
| 457 | + 'info_propose_5' => 'in the associated forum. It is available here:', |
|
| 458 | + 'info_publie_01' => 'The article "@titre@" was validated by @connect_nom@.', |
|
| 459 | + 'info_publie_1' => '[@nom_site_spip@] PUBLISHED: @titre@', |
|
| 460 | + 'info_publie_2' => 'Article published |
|
| 461 | 461 | -----------------', |
| 462 | - 'info_rechercher' => 'Search', |
|
| 463 | - 'info_rechercher_02' => 'Search:', |
|
| 464 | - 'info_remplacer_vignette' => 'Replace the default vignette by a customised logo:', |
|
| 465 | - 'info_rubriques_nb' => '@nb@ sections', |
|
| 466 | - 'info_rubriques_un' => '1 section', |
|
| 467 | - 'info_sans_titre_2' => 'untitled', |
|
| 468 | - 'info_selectionner_fichier' => 'You can select a file from the folder @upload@', |
|
| 469 | - 'info_selectionner_fichier_2' => 'Select a file:', |
|
| 470 | - 'info_sites_nb' => '@nb@ sites', |
|
| 471 | - 'info_sites_un' => '1 site', |
|
| 472 | - 'info_supprimer_vignette' => 'delete the vignette', |
|
| 473 | - 'info_symbole_bleu' => 'A <b>blue</b> symbol indicates a <b>memo</b>: i.e. a message for your personal use.', |
|
| 474 | - 'info_symbole_jaune' => 'A <b>yellow</b> symbol indicates an <b>announcement to all editors</b>: it can be edited by all administrators, and is visible to all editors.', |
|
| 475 | - 'info_symbole_vert' => 'A <b>green</b> symbol indicates the <b>messages exchanged with other users</b> of the site.', |
|
| 476 | - 'info_telecharger_nouveau_logo' => 'Upload a new logo:', |
|
| 477 | - 'info_telecharger_ordinateur' => 'Upload from your computer:', |
|
| 478 | - 'info_tous_resultats_enregistres' => '[all the results are recorded]', |
|
| 479 | - 'info_tout_afficher' => 'Show all', |
|
| 480 | - 'info_travaux_texte' => 'This site is not yet set up. Please come back later...', |
|
| 481 | - 'info_travaux_titre' => 'Site under construction', |
|
| 482 | - 'info_trop_resultat' => 'Too many results for "@cherche_mot@"; please refine the search.', |
|
| 483 | - 'info_utilisation_messagerie_interne' => 'You are using the internal message system of this site.', |
|
| 484 | - 'info_valider_lien' => 'validate this link', |
|
| 485 | - 'info_verifier_image' => ', please make sure your images have been transferred correctly.', |
|
| 486 | - 'info_vignette_defaut' => 'Default vignette', |
|
| 487 | - 'info_vignette_personnalisee' => 'Custom vignette', |
|
| 488 | - 'info_visite' => 'visit:', |
|
| 489 | - 'info_vos_rendez_vous' => 'Your future appointments', |
|
| 490 | - 'infos_vos_pense_bete' => 'Your memos', |
|
| 462 | + 'info_rechercher' => 'Search', |
|
| 463 | + 'info_rechercher_02' => 'Search:', |
|
| 464 | + 'info_remplacer_vignette' => 'Replace the default vignette by a customised logo:', |
|
| 465 | + 'info_rubriques_nb' => '@nb@ sections', |
|
| 466 | + 'info_rubriques_un' => '1 section', |
|
| 467 | + 'info_sans_titre_2' => 'untitled', |
|
| 468 | + 'info_selectionner_fichier' => 'You can select a file from the folder @upload@', |
|
| 469 | + 'info_selectionner_fichier_2' => 'Select a file:', |
|
| 470 | + 'info_sites_nb' => '@nb@ sites', |
|
| 471 | + 'info_sites_un' => '1 site', |
|
| 472 | + 'info_supprimer_vignette' => 'delete the vignette', |
|
| 473 | + 'info_symbole_bleu' => 'A <b>blue</b> symbol indicates a <b>memo</b>: i.e. a message for your personal use.', |
|
| 474 | + 'info_symbole_jaune' => 'A <b>yellow</b> symbol indicates an <b>announcement to all editors</b>: it can be edited by all administrators, and is visible to all editors.', |
|
| 475 | + 'info_symbole_vert' => 'A <b>green</b> symbol indicates the <b>messages exchanged with other users</b> of the site.', |
|
| 476 | + 'info_telecharger_nouveau_logo' => 'Upload a new logo:', |
|
| 477 | + 'info_telecharger_ordinateur' => 'Upload from your computer:', |
|
| 478 | + 'info_tous_resultats_enregistres' => '[all the results are recorded]', |
|
| 479 | + 'info_tout_afficher' => 'Show all', |
|
| 480 | + 'info_travaux_texte' => 'This site is not yet set up. Please come back later...', |
|
| 481 | + 'info_travaux_titre' => 'Site under construction', |
|
| 482 | + 'info_trop_resultat' => 'Too many results for "@cherche_mot@"; please refine the search.', |
|
| 483 | + 'info_utilisation_messagerie_interne' => 'You are using the internal message system of this site.', |
|
| 484 | + 'info_valider_lien' => 'validate this link', |
|
| 485 | + 'info_verifier_image' => ', please make sure your images have been transferred correctly.', |
|
| 486 | + 'info_vignette_defaut' => 'Default vignette', |
|
| 487 | + 'info_vignette_personnalisee' => 'Custom vignette', |
|
| 488 | + 'info_visite' => 'visit:', |
|
| 489 | + 'info_vos_rendez_vous' => 'Your future appointments', |
|
| 490 | + 'infos_vos_pense_bete' => 'Your memos', |
|
| 491 | 491 | |
| 492 | - // L |
|
| 493 | - 'label_ajout_id_rapide' => 'Quick addition', |
|
| 494 | - 'label_poids_fichier' => 'Size', |
|
| 495 | - 'label_ponctuer' => '@label@:', |
|
| 496 | - 'lien_afficher_icones_seuls' => 'Show only icons', |
|
| 497 | - 'lien_afficher_texte_icones' => 'Show icons and text', |
|
| 498 | - 'lien_afficher_texte_seul' => 'Show only text', |
|
| 499 | - 'lien_aller_a_la_derniere_page' => 'Go to the last page', |
|
| 500 | - 'lien_aller_a_la_page_nb' => 'Go to page @nb@', |
|
| 501 | - 'lien_aller_a_la_page_precedente' => 'Go to the previous page', |
|
| 502 | - 'lien_aller_a_la_page_suivante' => 'Go to the next page', |
|
| 503 | - 'lien_aller_a_la_premiere_page' => 'Go to the first page', |
|
| 504 | - 'lien_liberer' => 'release', |
|
| 505 | - 'lien_liberer_tous' => 'Release all', |
|
| 506 | - 'lien_nouvea_pense_bete' => 'NEW MEMO', |
|
| 507 | - 'lien_nouveau_message' => 'NEW MESSAGE', |
|
| 508 | - 'lien_nouvelle_annonce' => 'NEW ANNOUNCEMENT', |
|
| 509 | - 'lien_petitions' => 'PETITION', |
|
| 510 | - 'lien_popularite' => 'popularity: @popularite@%', |
|
| 511 | - 'lien_racine_site' => 'SITE ROOT', |
|
| 512 | - 'lien_reessayer' => 'try again', |
|
| 513 | - 'lien_repondre_message' => 'Reply to this message', |
|
| 514 | - 'lien_supprimer' => 'delete', |
|
| 515 | - 'lien_tout_afficher' => 'Show all', |
|
| 516 | - 'lien_visite_site' => 'visit this site', |
|
| 517 | - 'lien_visites' => '@visites@ visits', |
|
| 518 | - 'lien_voir_auteur' => 'Check this author', |
|
| 519 | - 'ligne' => 'Line', |
|
| 520 | - 'login' => 'Connection', |
|
| 521 | - 'login_acces_prive' => 'access to the private area', |
|
| 522 | - 'login_autre_identifiant' => 'use a different ID', |
|
| 523 | - 'login_cookie_accepte' => 'Please configure your browser to accept them for this site.', |
|
| 524 | - 'login_cookie_oblige' => 'For secure identification, your browser must accept cookies.', |
|
| 525 | - 'login_deconnexion_ok' => 'Logged out.', |
|
| 526 | - 'login_erreur_pass' => 'Wrong password.', |
|
| 527 | - 'login_espace_prive' => 'private area', |
|
| 528 | - 'login_identifiant_inconnu' => 'The identifier "@login@" is unknown.', |
|
| 529 | - 'login_login' => 'Login:', |
|
| 530 | - 'login_login2' => 'Login or e-mail address:', |
|
| 531 | - 'login_login_pass_incorrect' => '(Wrong login or password).', |
|
| 532 | - 'login_motpasseoublie' => 'password forgotten?', |
|
| 533 | - 'login_non_securise' => 'Caution, this form is not secure. |
|
| 492 | + // L |
|
| 493 | + 'label_ajout_id_rapide' => 'Quick addition', |
|
| 494 | + 'label_poids_fichier' => 'Size', |
|
| 495 | + 'label_ponctuer' => '@label@:', |
|
| 496 | + 'lien_afficher_icones_seuls' => 'Show only icons', |
|
| 497 | + 'lien_afficher_texte_icones' => 'Show icons and text', |
|
| 498 | + 'lien_afficher_texte_seul' => 'Show only text', |
|
| 499 | + 'lien_aller_a_la_derniere_page' => 'Go to the last page', |
|
| 500 | + 'lien_aller_a_la_page_nb' => 'Go to page @nb@', |
|
| 501 | + 'lien_aller_a_la_page_precedente' => 'Go to the previous page', |
|
| 502 | + 'lien_aller_a_la_page_suivante' => 'Go to the next page', |
|
| 503 | + 'lien_aller_a_la_premiere_page' => 'Go to the first page', |
|
| 504 | + 'lien_liberer' => 'release', |
|
| 505 | + 'lien_liberer_tous' => 'Release all', |
|
| 506 | + 'lien_nouvea_pense_bete' => 'NEW MEMO', |
|
| 507 | + 'lien_nouveau_message' => 'NEW MESSAGE', |
|
| 508 | + 'lien_nouvelle_annonce' => 'NEW ANNOUNCEMENT', |
|
| 509 | + 'lien_petitions' => 'PETITION', |
|
| 510 | + 'lien_popularite' => 'popularity: @popularite@%', |
|
| 511 | + 'lien_racine_site' => 'SITE ROOT', |
|
| 512 | + 'lien_reessayer' => 'try again', |
|
| 513 | + 'lien_repondre_message' => 'Reply to this message', |
|
| 514 | + 'lien_supprimer' => 'delete', |
|
| 515 | + 'lien_tout_afficher' => 'Show all', |
|
| 516 | + 'lien_visite_site' => 'visit this site', |
|
| 517 | + 'lien_visites' => '@visites@ visits', |
|
| 518 | + 'lien_voir_auteur' => 'Check this author', |
|
| 519 | + 'ligne' => 'Line', |
|
| 520 | + 'login' => 'Connection', |
|
| 521 | + 'login_acces_prive' => 'access to the private area', |
|
| 522 | + 'login_autre_identifiant' => 'use a different ID', |
|
| 523 | + 'login_cookie_accepte' => 'Please configure your browser to accept them for this site.', |
|
| 524 | + 'login_cookie_oblige' => 'For secure identification, your browser must accept cookies.', |
|
| 525 | + 'login_deconnexion_ok' => 'Logged out.', |
|
| 526 | + 'login_erreur_pass' => 'Wrong password.', |
|
| 527 | + 'login_espace_prive' => 'private area', |
|
| 528 | + 'login_identifiant_inconnu' => 'The identifier "@login@" is unknown.', |
|
| 529 | + 'login_login' => 'Login:', |
|
| 530 | + 'login_login2' => 'Login or e-mail address:', |
|
| 531 | + 'login_login_pass_incorrect' => '(Wrong login or password).', |
|
| 532 | + 'login_motpasseoublie' => 'password forgotten?', |
|
| 533 | + 'login_non_securise' => 'Caution, this form is not secure. |
|
| 534 | 534 | If you do not want your password to be open to |
| 535 | 535 | interception on the network, please activate Javascript |
| 536 | 536 | in your browser and', |
| 537 | - 'login_nouvelle_tentative' => 'New attempt', |
|
| 538 | - 'login_par_ici' => 'You are registered... this way...', |
|
| 539 | - 'login_pass2' => 'Password:', |
|
| 540 | - 'login_preferez_refuser' => '<b>If you prefer to refuse cookies</b>, there is another, less secure, method of connection available:', |
|
| 541 | - 'login_recharger' => 'reload this page', |
|
| 542 | - 'login_rester_identifie' => 'Remember me', |
|
| 543 | - 'login_retour_public' => 'Back to the public site', |
|
| 544 | - 'login_retour_site' => 'Back to the public site', |
|
| 545 | - 'login_retoursitepublic' => 'back to the public site', |
|
| 546 | - 'login_sans_cookie' => 'Identification without cookie', |
|
| 547 | - 'login_securise' => 'Secure login', |
|
| 548 | - 'login_sinscrire' => 'Sign up', |
|
| 549 | - 'login_test_navigateur' => 'testing browser/reconnection', |
|
| 550 | - 'login_verifiez_navigateur' => '(However, check that your browser did not memorise your password...)', |
|
| 537 | + 'login_nouvelle_tentative' => 'New attempt', |
|
| 538 | + 'login_par_ici' => 'You are registered... this way...', |
|
| 539 | + 'login_pass2' => 'Password:', |
|
| 540 | + 'login_preferez_refuser' => '<b>If you prefer to refuse cookies</b>, there is another, less secure, method of connection available:', |
|
| 541 | + 'login_recharger' => 'reload this page', |
|
| 542 | + 'login_rester_identifie' => 'Remember me', |
|
| 543 | + 'login_retour_public' => 'Back to the public site', |
|
| 544 | + 'login_retour_site' => 'Back to the public site', |
|
| 545 | + 'login_retoursitepublic' => 'back to the public site', |
|
| 546 | + 'login_sans_cookie' => 'Identification without cookie', |
|
| 547 | + 'login_securise' => 'Secure login', |
|
| 548 | + 'login_sinscrire' => 'Sign up', |
|
| 549 | + 'login_test_navigateur' => 'testing browser/reconnection', |
|
| 550 | + 'login_verifiez_navigateur' => '(However, check that your browser did not memorise your password...)', |
|
| 551 | 551 | |
| 552 | - // M |
|
| 553 | - 'masquer_colonne' => 'Hide this column', |
|
| 554 | - 'masquer_trad' => 'hide translations', |
|
| 555 | - 'message_nouveaux_identifiants_echec' => 'New identifiers could not be created.', |
|
| 556 | - 'message_nouveaux_identifiants_echec_envoi' => 'The new connection identifiers could not be sent.', |
|
| 557 | - 'message_nouveaux_identifiants_ok' => 'The new connection identifiers were sent to @email@.', |
|
| 558 | - 'module_fichiers_langues' => 'Language files', |
|
| 552 | + // M |
|
| 553 | + 'masquer_colonne' => 'Hide this column', |
|
| 554 | + 'masquer_trad' => 'hide translations', |
|
| 555 | + 'message_nouveaux_identifiants_echec' => 'New identifiers could not be created.', |
|
| 556 | + 'message_nouveaux_identifiants_echec_envoi' => 'The new connection identifiers could not be sent.', |
|
| 557 | + 'message_nouveaux_identifiants_ok' => 'The new connection identifiers were sent to @email@.', |
|
| 558 | + 'module_fichiers_langues' => 'Language files', |
|
| 559 | 559 | |
| 560 | - // N |
|
| 561 | - 'navigateur_pas_redirige' => 'If you are not automatically redirected, click here to continue.', |
|
| 562 | - 'numero' => 'Number', |
|
| 560 | + // N |
|
| 561 | + 'navigateur_pas_redirige' => 'If you are not automatically redirected, click here to continue.', |
|
| 562 | + 'numero' => 'Number', |
|
| 563 | 563 | |
| 564 | - // O |
|
| 565 | - 'occurence' => 'Instance', |
|
| 566 | - 'onglet_affacer_base' => 'Delete the database', |
|
| 567 | - 'onglet_auteur' => 'The author', |
|
| 568 | - 'onglet_contenu_site' => 'Site content', |
|
| 569 | - 'onglet_evolution_visite_mod' => 'Trend in visits', |
|
| 570 | - 'onglet_fonctions_avances' => 'Advanced functions', |
|
| 571 | - 'onglet_informations_personnelles' => 'Personal Information', |
|
| 572 | - 'onglet_interactivite' => 'Interactivity', |
|
| 573 | - 'onglet_messagerie' => 'Messaging', |
|
| 574 | - 'onglet_repartition_rubrique' => 'Distribution by section', |
|
| 575 | - 'onglet_save_restaur_base' => 'Backup/restore the database', |
|
| 576 | - 'onglet_vider_cache' => 'Empty the cache', |
|
| 564 | + // O |
|
| 565 | + 'occurence' => 'Instance', |
|
| 566 | + 'onglet_affacer_base' => 'Delete the database', |
|
| 567 | + 'onglet_auteur' => 'The author', |
|
| 568 | + 'onglet_contenu_site' => 'Site content', |
|
| 569 | + 'onglet_evolution_visite_mod' => 'Trend in visits', |
|
| 570 | + 'onglet_fonctions_avances' => 'Advanced functions', |
|
| 571 | + 'onglet_informations_personnelles' => 'Personal Information', |
|
| 572 | + 'onglet_interactivite' => 'Interactivity', |
|
| 573 | + 'onglet_messagerie' => 'Messaging', |
|
| 574 | + 'onglet_repartition_rubrique' => 'Distribution by section', |
|
| 575 | + 'onglet_save_restaur_base' => 'Backup/restore the database', |
|
| 576 | + 'onglet_vider_cache' => 'Empty the cache', |
|
| 577 | 577 | |
| 578 | - // P |
|
| 579 | - 'pass_choix_pass' => 'Please choose a new password:', |
|
| 580 | - 'pass_erreur' => 'Error', |
|
| 581 | - 'pass_erreur_acces_refuse' => '<b>Error:</b> you no longer have access to this site.', |
|
| 582 | - 'pass_erreur_code_inconnu' => '<b>Error:</b> this code does not match any visitors with access permission to this site.', |
|
| 583 | - 'pass_erreur_non_enregistre' => '<b>Error :</b> the address <tt>@email_oubli@</tt> is not registered on this site.', |
|
| 584 | - 'pass_erreur_non_valide' => '<b>Error :</b> the e-mail <tt>@email_oubli@</tt> is not valid!', |
|
| 585 | - 'pass_erreur_probleme_technique' => '<b>Error :</b> this e-mail could not be sent due to a technical problem.', |
|
| 586 | - 'pass_espace_prive_bla' => 'The private area of this site is open to |
|
| 578 | + // P |
|
| 579 | + 'pass_choix_pass' => 'Please choose a new password:', |
|
| 580 | + 'pass_erreur' => 'Error', |
|
| 581 | + 'pass_erreur_acces_refuse' => '<b>Error:</b> you no longer have access to this site.', |
|
| 582 | + 'pass_erreur_code_inconnu' => '<b>Error:</b> this code does not match any visitors with access permission to this site.', |
|
| 583 | + 'pass_erreur_non_enregistre' => '<b>Error :</b> the address <tt>@email_oubli@</tt> is not registered on this site.', |
|
| 584 | + 'pass_erreur_non_valide' => '<b>Error :</b> the e-mail <tt>@email_oubli@</tt> is not valid!', |
|
| 585 | + 'pass_erreur_probleme_technique' => '<b>Error :</b> this e-mail could not be sent due to a technical problem.', |
|
| 586 | + 'pass_espace_prive_bla' => 'The private area of this site is open to |
|
| 587 | 587 | visitors after registration. Once you have registered, |
| 588 | 588 | you can review the articles in progress, |
| 589 | 589 | submit articles and participate in forums.', |
| 590 | - 'pass_forum_bla' => 'You have requested to take part in a forum |
|
| 590 | + 'pass_forum_bla' => 'You have requested to take part in a forum |
|
| 591 | 591 | reserved for registered visitors.', |
| 592 | - 'pass_indiquez_cidessous' => 'Enter the email address with which you |
|
| 592 | + 'pass_indiquez_cidessous' => 'Enter the email address with which you |
|
| 593 | 593 | registered. You |
| 594 | 594 | will receive an email explaining how you |
| 595 | 595 | can retrieve your password.', |
| 596 | - 'pass_mail_passcookie' => '(this is an automated message) |
|
| 596 | + 'pass_mail_passcookie' => '(this is an automated message) |
|
| 597 | 597 | |
| 598 | 598 | To recover your access to the site |
| 599 | 599 | @nom_site_spip@ (@adresse_site@) |
@@ -604,150 +604,150 @@ discard block |
||
| 604 | 604 | You can then enter a new password |
| 605 | 605 | and log in to the site. |
| 606 | 606 | ', |
| 607 | - 'pass_mot_oublie' => 'Password forgotten', |
|
| 608 | - 'pass_nouveau_enregistre' => 'Your new password has been recorded.', |
|
| 609 | - 'pass_nouveau_pass' => 'New password', |
|
| 610 | - 'pass_ok' => 'OK', |
|
| 611 | - 'pass_oubli_mot' => 'Forgotten password', |
|
| 612 | - 'pass_procedure_changer' => 'In order to change your password, we have to check your identity first. Please enter the e-mail address associated with this account.', |
|
| 613 | - 'pass_quitter_fenetre' => 'Close this window', |
|
| 614 | - 'pass_rappel_login' => 'Reminder: your identifier (login) is "@login@".', |
|
| 615 | - 'pass_recevoir_mail' => 'A link to reset your password has been sent to your email address (if it is valid).', |
|
| 616 | - 'pass_retour_public' => 'Back to the public site', |
|
| 617 | - 'pass_rien_a_faire_ici' => 'Nothing to do here.', |
|
| 618 | - 'pass_vousinscrire' => 'Registering with the site', |
|
| 619 | - 'precedent' => 'previous', |
|
| 620 | - 'previsualisation' => 'Preview', |
|
| 621 | - 'previsualiser' => 'Show preview', |
|
| 607 | + 'pass_mot_oublie' => 'Password forgotten', |
|
| 608 | + 'pass_nouveau_enregistre' => 'Your new password has been recorded.', |
|
| 609 | + 'pass_nouveau_pass' => 'New password', |
|
| 610 | + 'pass_ok' => 'OK', |
|
| 611 | + 'pass_oubli_mot' => 'Forgotten password', |
|
| 612 | + 'pass_procedure_changer' => 'In order to change your password, we have to check your identity first. Please enter the e-mail address associated with this account.', |
|
| 613 | + 'pass_quitter_fenetre' => 'Close this window', |
|
| 614 | + 'pass_rappel_login' => 'Reminder: your identifier (login) is "@login@".', |
|
| 615 | + 'pass_recevoir_mail' => 'A link to reset your password has been sent to your email address (if it is valid).', |
|
| 616 | + 'pass_retour_public' => 'Back to the public site', |
|
| 617 | + 'pass_rien_a_faire_ici' => 'Nothing to do here.', |
|
| 618 | + 'pass_vousinscrire' => 'Registering with the site', |
|
| 619 | + 'precedent' => 'previous', |
|
| 620 | + 'previsualisation' => 'Preview', |
|
| 621 | + 'previsualiser' => 'Show preview', |
|
| 622 | 622 | |
| 623 | - // R |
|
| 624 | - 'retour' => 'Back', |
|
| 623 | + // R |
|
| 624 | + 'retour' => 'Back', |
|
| 625 | 625 | |
| 626 | - // S |
|
| 627 | - 'spip_conforme_dtd' => 'SPIP finds this page to be in compliance with its DOCTYPE:', |
|
| 628 | - 'squelette' => 'template', |
|
| 629 | - 'squelette_inclus_ligne' => 'included template, line', |
|
| 630 | - 'squelette_ligne' => 'template, line', |
|
| 631 | - 'stats_visites_et_popularite' => '@visites@ visits; popularity: @popularite@', |
|
| 632 | - 'suivant' => 'next', |
|
| 626 | + // S |
|
| 627 | + 'spip_conforme_dtd' => 'SPIP finds this page to be in compliance with its DOCTYPE:', |
|
| 628 | + 'squelette' => 'template', |
|
| 629 | + 'squelette_inclus_ligne' => 'included template, line', |
|
| 630 | + 'squelette_ligne' => 'template, line', |
|
| 631 | + 'stats_visites_et_popularite' => '@visites@ visits; popularity: @popularite@', |
|
| 632 | + 'suivant' => 'next', |
|
| 633 | 633 | |
| 634 | - // T |
|
| 635 | - 'taille_go' => '@taille@ Gb', |
|
| 636 | - 'taille_go_bi' => '@taille@ GiB', |
|
| 637 | - 'taille_ko' => '@taille@ kb', |
|
| 638 | - 'taille_ko_bi' => '@taille@ KiB', |
|
| 639 | - 'taille_mo' => '@taille@ Mb', |
|
| 640 | - 'taille_mo_bi' => '@taille@ MiB', |
|
| 641 | - 'taille_octets' => '@taille@ bytes', |
|
| 642 | - 'taille_octets_bi' => '@taille@ bytes', |
|
| 643 | - 'texte_actualite_site_1' => 'When you are more familiar with the interface, click on "', |
|
| 644 | - 'texte_actualite_site_2' => 'full interface', |
|
| 645 | - 'texte_actualite_site_3' => '" to make more features available.', |
|
| 646 | - 'texte_creation_automatique_vignette' => 'Automatic creation of preview vignettes is enabled. If you use this form to install, images in the format(s) @gd_formats@, they will be coupled with a vignette whose maximum size is @taille_preview@ pixels.', |
|
| 647 | - 'texte_documents_associes' => 'The following documents are associated with the article,, |
|
| 634 | + // T |
|
| 635 | + 'taille_go' => '@taille@ Gb', |
|
| 636 | + 'taille_go_bi' => '@taille@ GiB', |
|
| 637 | + 'taille_ko' => '@taille@ kb', |
|
| 638 | + 'taille_ko_bi' => '@taille@ KiB', |
|
| 639 | + 'taille_mo' => '@taille@ Mb', |
|
| 640 | + 'taille_mo_bi' => '@taille@ MiB', |
|
| 641 | + 'taille_octets' => '@taille@ bytes', |
|
| 642 | + 'taille_octets_bi' => '@taille@ bytes', |
|
| 643 | + 'texte_actualite_site_1' => 'When you are more familiar with the interface, click on "', |
|
| 644 | + 'texte_actualite_site_2' => 'full interface', |
|
| 645 | + 'texte_actualite_site_3' => '" to make more features available.', |
|
| 646 | + 'texte_creation_automatique_vignette' => 'Automatic creation of preview vignettes is enabled. If you use this form to install, images in the format(s) @gd_formats@, they will be coupled with a vignette whose maximum size is @taille_preview@ pixels.', |
|
| 647 | + 'texte_documents_associes' => 'The following documents are associated with the article,, |
|
| 648 | 648 | but they were not directly |
| 649 | 649 | inserted. Depending on the layout of the public site, |
| 650 | 650 | they may appear as attached documents.', |
| 651 | - 'texte_erreur_mise_niveau_base' => 'Database error during the upgrade. |
|
| 651 | + 'texte_erreur_mise_niveau_base' => 'Database error during the upgrade. |
|
| 652 | 652 | The image <b>@fichier@</b> did not pass (article @id_article@).<p> |
| 653 | 653 | Note this reference carefully, try the upgrade procedure again, |
| 654 | 654 | and check afterwards that the images still appear |
| 655 | 655 | in the articles.', |
| 656 | - 'texte_erreur_visiteur' => 'You have tried to enter the private area using an unauthorised login.', |
|
| 657 | - 'texte_inc_auth_1' => 'You used the login |
|
| 656 | + 'texte_erreur_visiteur' => 'You have tried to enter the private area using an unauthorised login.', |
|
| 657 | + 'texte_inc_auth_1' => 'You used the login |
|
| 658 | 658 | <b>@auth_login@</b>, but it does not exist in the database. |
| 659 | 659 | Try to', |
| 660 | - 'texte_inc_auth_2' => 'reconnect', |
|
| 661 | - 'texte_inc_auth_3' => ', having quit and |
|
| 660 | + 'texte_inc_auth_2' => 'reconnect', |
|
| 661 | + 'texte_inc_auth_3' => ', having quit and |
|
| 662 | 662 | restarted your browser if necessary.', |
| 663 | - 'texte_inc_config' => 'Changes made to the options on these pages have a great effect on |
|
| 663 | + 'texte_inc_config' => 'Changes made to the options on these pages have a great effect on |
|
| 664 | 664 | the functioning of the site. You are advised not to make any changes unless you are |
| 665 | 665 | familiar with how SPIP works. <br /><br /><b>In |
| 666 | 666 | general, you are strongly advised |
| 667 | 667 | to let the main webmaster of the site deal with these pages.</b>', |
| 668 | - 'texte_inc_meta_1' => 'The system encountered an error when trying to write the file <code>@fichier@</code>. As a site administrator, please', |
|
| 669 | - 'texte_inc_meta_2' => 'verify write permissions', |
|
| 670 | - 'texte_inc_meta_3' => 'of the directory <code>@repertoire@</code>.', |
|
| 671 | - 'texte_statut_en_cours_redaction' => 'editing in progress', |
|
| 672 | - 'texte_statut_poubelle' => 'to the dustbin', |
|
| 673 | - 'texte_statut_propose_evaluation' => 'submitted for evaluation', |
|
| 674 | - 'texte_statut_publie' => 'published online', |
|
| 675 | - 'texte_statut_refuse' => 'rejected', |
|
| 676 | - 'titre_ajouter_mot_cle' => 'ADD A KEYWORD:', |
|
| 677 | - 'titre_cadre_raccourcis' => 'SHORTCUTS:', |
|
| 678 | - 'titre_changer_couleur_interface' => 'Changing interface colour', |
|
| 679 | - 'titre_image_admin_article' => 'You can administrate this article', |
|
| 680 | - 'titre_image_administrateur' => 'Administrator', |
|
| 681 | - 'titre_image_aide' => 'Help on this item', |
|
| 682 | - 'titre_image_auteur_supprime' => 'Author deleted', |
|
| 683 | - 'titre_image_redacteur' => 'Editor without access', |
|
| 684 | - 'titre_image_redacteur_02' => 'Editor', |
|
| 685 | - 'titre_image_selecteur' => 'Display list', |
|
| 686 | - 'titre_image_visiteur' => 'Visitor', |
|
| 687 | - 'titre_joindre_document' => 'ATTACH A DOCUMENT', |
|
| 688 | - 'titre_mots_cles' => 'KEYWORDS', |
|
| 689 | - 'titre_probleme_technique' => 'Warning: a technical problem (SQL server) is preventing access to this part of the site. Thank you for your patience.', |
|
| 690 | - 'titre_publier_document' => 'PUBLISH A DOCUMENT IN THIS SECTION', |
|
| 691 | - 'titre_signatures_attente' => 'Signatures awaiting validation', |
|
| 692 | - 'titre_signatures_confirmees' => 'Signatures confirmed', |
|
| 693 | - 'titre_statistiques' => 'Site statistics', |
|
| 694 | - 'titre_titre_document' => 'Document title:', |
|
| 695 | - 'todo' => 'to come', |
|
| 696 | - 'trad_definir_reference' => 'Choose "@titre@" as a reference for translations', |
|
| 697 | - 'trad_reference' => '(reference for translations)', |
|
| 668 | + 'texte_inc_meta_1' => 'The system encountered an error when trying to write the file <code>@fichier@</code>. As a site administrator, please', |
|
| 669 | + 'texte_inc_meta_2' => 'verify write permissions', |
|
| 670 | + 'texte_inc_meta_3' => 'of the directory <code>@repertoire@</code>.', |
|
| 671 | + 'texte_statut_en_cours_redaction' => 'editing in progress', |
|
| 672 | + 'texte_statut_poubelle' => 'to the dustbin', |
|
| 673 | + 'texte_statut_propose_evaluation' => 'submitted for evaluation', |
|
| 674 | + 'texte_statut_publie' => 'published online', |
|
| 675 | + 'texte_statut_refuse' => 'rejected', |
|
| 676 | + 'titre_ajouter_mot_cle' => 'ADD A KEYWORD:', |
|
| 677 | + 'titre_cadre_raccourcis' => 'SHORTCUTS:', |
|
| 678 | + 'titre_changer_couleur_interface' => 'Changing interface colour', |
|
| 679 | + 'titre_image_admin_article' => 'You can administrate this article', |
|
| 680 | + 'titre_image_administrateur' => 'Administrator', |
|
| 681 | + 'titre_image_aide' => 'Help on this item', |
|
| 682 | + 'titre_image_auteur_supprime' => 'Author deleted', |
|
| 683 | + 'titre_image_redacteur' => 'Editor without access', |
|
| 684 | + 'titre_image_redacteur_02' => 'Editor', |
|
| 685 | + 'titre_image_selecteur' => 'Display list', |
|
| 686 | + 'titre_image_visiteur' => 'Visitor', |
|
| 687 | + 'titre_joindre_document' => 'ATTACH A DOCUMENT', |
|
| 688 | + 'titre_mots_cles' => 'KEYWORDS', |
|
| 689 | + 'titre_probleme_technique' => 'Warning: a technical problem (SQL server) is preventing access to this part of the site. Thank you for your patience.', |
|
| 690 | + 'titre_publier_document' => 'PUBLISH A DOCUMENT IN THIS SECTION', |
|
| 691 | + 'titre_signatures_attente' => 'Signatures awaiting validation', |
|
| 692 | + 'titre_signatures_confirmees' => 'Signatures confirmed', |
|
| 693 | + 'titre_statistiques' => 'Site statistics', |
|
| 694 | + 'titre_titre_document' => 'Document title:', |
|
| 695 | + 'todo' => 'to come', |
|
| 696 | + 'trad_definir_reference' => 'Choose "@titre@" as a reference for translations', |
|
| 697 | + 'trad_reference' => '(reference for translations)', |
|
| 698 | 698 | |
| 699 | - // U |
|
| 700 | - 'upload_limit' => 'This file is too big for the server: the maximum size allowed for <i>upload</i> is @max@.', |
|
| 699 | + // U |
|
| 700 | + 'upload_limit' => 'This file is too big for the server: the maximum size allowed for <i>upload</i> is @max@.', |
|
| 701 | 701 | |
| 702 | - // Z |
|
| 703 | - 'zbug_balise_b_aval' => ': B tag too late in loop', |
|
| 704 | - 'zbug_balise_inexistante' => 'Tag @balise@ wrongly declared for @from@', |
|
| 705 | - 'zbug_balise_sans_argument' => 'Missing argument in the @balise@ tag', |
|
| 706 | - 'zbug_boucle' => 'loop', |
|
| 707 | - 'zbug_boucle_recursive_undef' => 'undefined recursive loop: @nom@', |
|
| 708 | - 'zbug_calcul' => 'calculation', |
|
| 709 | - 'zbug_champ_hors_boucle' => 'Field @champ@ outside loop', |
|
| 710 | - 'zbug_champ_hors_critere' => 'Field @champ@ outside criterion @critere@', |
|
| 711 | - 'zbug_champ_hors_motif' => 'Field @champ@ outside context @motif@', |
|
| 712 | - 'zbug_code' => 'code', |
|
| 713 | - 'zbug_critere_inconnu' => 'Unknown criterion @critere@', |
|
| 714 | - 'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} on a table without atomic primary key', |
|
| 715 | - 'zbug_distant_interdit' => 'External data forbidden', |
|
| 716 | - 'zbug_doublon_table_sans_cle_primaire' => 'Duplicate entries on a table which does not have a simple primary key', |
|
| 717 | - 'zbug_doublon_table_sans_index' => 'Duplicate entries on a table without an index', |
|
| 718 | - 'zbug_erreur_boucle_double' => 'Loop @id@: double definition', |
|
| 719 | - 'zbug_erreur_boucle_fermant' => 'Loop @id@: missing closing tag', |
|
| 720 | - 'zbug_erreur_boucle_syntaxe' => 'Syntax error in loop (BOUCLE)', |
|
| 721 | - 'zbug_erreur_compilation' => 'Compilation error', |
|
| 722 | - 'zbug_erreur_execution_page' => 'Execution error', |
|
| 723 | - 'zbug_erreur_filtre' => 'Undefined filter @filtre@', |
|
| 724 | - 'zbug_erreur_filtre_nbarg_min' => '@filtre@ filter: @nb@ argument(s) missing', |
|
| 725 | - 'zbug_erreur_meme_parent' => '{meme_parent} only applies to loops (FORUMS) and (RUBRIQUES)', |
|
| 726 | - 'zbug_erreur_squelette' => 'Error(s) in template', |
|
| 727 | - 'zbug_hors_compilation' => 'Uncompiled', |
|
| 728 | - 'zbug_info_erreur_squelette' => 'Error in the site', |
|
| 729 | - 'zbug_inversion_ordre_inexistant' => 'Reversion of non-existent order', |
|
| 730 | - 'zbug_pagination_sans_critere' => '#PAGINATION tag without {pagination} criterion, or used in a recursive loop', |
|
| 731 | - 'zbug_parametres_inclus_incorrects' => 'Wrong inclusion parameter: @param@', |
|
| 732 | - 'zbug_profile' => 'Calculation time: @time@', |
|
| 733 | - 'zbug_resultat' => 'result', |
|
| 734 | - 'zbug_serveur_indefini' => 'Undefined SQL server', |
|
| 735 | - 'zbug_statistiques' => 'SQL query statistics in order of duration', |
|
| 736 | - 'zbug_table_inconnue' => 'Unknown SQL table "@table@"', |
|
| 737 | - 'zxml_connus_attributs' => 'known attributes', |
|
| 738 | - 'zxml_de' => 'from', |
|
| 739 | - 'zxml_inconnu_attribut' => 'unknown attribute', |
|
| 740 | - 'zxml_inconnu_balise' => 'unknown tag', |
|
| 741 | - 'zxml_inconnu_entite' => 'unknown entity', |
|
| 742 | - 'zxml_inconnu_id' => 'unknown ID', |
|
| 743 | - 'zxml_mais_de' => 'but from', |
|
| 744 | - 'zxml_non_conforme' => 'not true to the principle', |
|
| 745 | - 'zxml_non_fils' => 'is not a child of', |
|
| 746 | - 'zxml_nonvide_balise' => 'tag not empty', |
|
| 747 | - 'zxml_obligatoire_attribut' => 'required attribute absent in', |
|
| 748 | - 'zxml_succession_fils_incorrecte' => 'incorrect child inheritance', |
|
| 749 | - 'zxml_survoler' => 'to see the correct ones, hover with the cursor', |
|
| 750 | - 'zxml_valeur_attribut' => 'attribute value', |
|
| 751 | - 'zxml_vide_balise' => 'empty tag', |
|
| 752 | - 'zxml_vu' => 'seen before' |
|
| 702 | + // Z |
|
| 703 | + 'zbug_balise_b_aval' => ': B tag too late in loop', |
|
| 704 | + 'zbug_balise_inexistante' => 'Tag @balise@ wrongly declared for @from@', |
|
| 705 | + 'zbug_balise_sans_argument' => 'Missing argument in the @balise@ tag', |
|
| 706 | + 'zbug_boucle' => 'loop', |
|
| 707 | + 'zbug_boucle_recursive_undef' => 'undefined recursive loop: @nom@', |
|
| 708 | + 'zbug_calcul' => 'calculation', |
|
| 709 | + 'zbug_champ_hors_boucle' => 'Field @champ@ outside loop', |
|
| 710 | + 'zbug_champ_hors_critere' => 'Field @champ@ outside criterion @critere@', |
|
| 711 | + 'zbug_champ_hors_motif' => 'Field @champ@ outside context @motif@', |
|
| 712 | + 'zbug_code' => 'code', |
|
| 713 | + 'zbug_critere_inconnu' => 'Unknown criterion @critere@', |
|
| 714 | + 'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} on a table without atomic primary key', |
|
| 715 | + 'zbug_distant_interdit' => 'External data forbidden', |
|
| 716 | + 'zbug_doublon_table_sans_cle_primaire' => 'Duplicate entries on a table which does not have a simple primary key', |
|
| 717 | + 'zbug_doublon_table_sans_index' => 'Duplicate entries on a table without an index', |
|
| 718 | + 'zbug_erreur_boucle_double' => 'Loop @id@: double definition', |
|
| 719 | + 'zbug_erreur_boucle_fermant' => 'Loop @id@: missing closing tag', |
|
| 720 | + 'zbug_erreur_boucle_syntaxe' => 'Syntax error in loop (BOUCLE)', |
|
| 721 | + 'zbug_erreur_compilation' => 'Compilation error', |
|
| 722 | + 'zbug_erreur_execution_page' => 'Execution error', |
|
| 723 | + 'zbug_erreur_filtre' => 'Undefined filter @filtre@', |
|
| 724 | + 'zbug_erreur_filtre_nbarg_min' => '@filtre@ filter: @nb@ argument(s) missing', |
|
| 725 | + 'zbug_erreur_meme_parent' => '{meme_parent} only applies to loops (FORUMS) and (RUBRIQUES)', |
|
| 726 | + 'zbug_erreur_squelette' => 'Error(s) in template', |
|
| 727 | + 'zbug_hors_compilation' => 'Uncompiled', |
|
| 728 | + 'zbug_info_erreur_squelette' => 'Error in the site', |
|
| 729 | + 'zbug_inversion_ordre_inexistant' => 'Reversion of non-existent order', |
|
| 730 | + 'zbug_pagination_sans_critere' => '#PAGINATION tag without {pagination} criterion, or used in a recursive loop', |
|
| 731 | + 'zbug_parametres_inclus_incorrects' => 'Wrong inclusion parameter: @param@', |
|
| 732 | + 'zbug_profile' => 'Calculation time: @time@', |
|
| 733 | + 'zbug_resultat' => 'result', |
|
| 734 | + 'zbug_serveur_indefini' => 'Undefined SQL server', |
|
| 735 | + 'zbug_statistiques' => 'SQL query statistics in order of duration', |
|
| 736 | + 'zbug_table_inconnue' => 'Unknown SQL table "@table@"', |
|
| 737 | + 'zxml_connus_attributs' => 'known attributes', |
|
| 738 | + 'zxml_de' => 'from', |
|
| 739 | + 'zxml_inconnu_attribut' => 'unknown attribute', |
|
| 740 | + 'zxml_inconnu_balise' => 'unknown tag', |
|
| 741 | + 'zxml_inconnu_entite' => 'unknown entity', |
|
| 742 | + 'zxml_inconnu_id' => 'unknown ID', |
|
| 743 | + 'zxml_mais_de' => 'but from', |
|
| 744 | + 'zxml_non_conforme' => 'not true to the principle', |
|
| 745 | + 'zxml_non_fils' => 'is not a child of', |
|
| 746 | + 'zxml_nonvide_balise' => 'tag not empty', |
|
| 747 | + 'zxml_obligatoire_attribut' => 'required attribute absent in', |
|
| 748 | + 'zxml_succession_fils_incorrecte' => 'incorrect child inheritance', |
|
| 749 | + 'zxml_survoler' => 'to see the correct ones, hover with the cursor', |
|
| 750 | + 'zxml_valeur_attribut' => 'attribute value', |
|
| 751 | + 'zxml_vide_balise' => 'empty tag', |
|
| 752 | + 'zxml_vu' => 'seen before' |
|
| 753 | 753 | ); |
@@ -4,246 +4,246 @@ discard block |
||
| 4 | 4 | // ** ne pas modifier le fichier ** |
| 5 | 5 | |
| 6 | 6 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 7 | - return; |
|
| 7 | + return; |
|
| 8 | 8 | } |
| 9 | 9 | |
| 10 | 10 | $GLOBALS[$GLOBALS['idx_lang']] = array( |
| 11 | 11 | |
| 12 | - // A |
|
| 13 | - 'access_interface_graphique' => 'عودة إلى الواجهة الرسومية الكاملة', |
|
| 14 | - 'access_mode_texte' => 'عرض الواجهة النصية المبسّطة', |
|
| 15 | - 'admin_debug' => 'اكتشاف الأخطاء', |
|
| 16 | - 'admin_modifier_article' => 'تعديل هذا المقال', |
|
| 17 | - 'admin_modifier_auteur' => 'تغيير هذا المؤلف', |
|
| 18 | - 'admin_modifier_breve' => 'تعديل هذا الخبر', |
|
| 19 | - 'admin_modifier_mot' => 'تغيير هذا المفتاح', |
|
| 20 | - 'admin_modifier_rubrique' => 'تعديل هذا القسم', |
|
| 21 | - 'admin_recalculer' => 'إعادة تحديث هذه الصفحة', |
|
| 22 | - 'afficher_calendrier' => 'عرض الروزنامة', |
|
| 23 | - 'afficher_trad' => 'عرض الترجمات', |
|
| 24 | - 'alerte_maj_impossible' => '<b>تحذير!</b> ترقية قاعدة SQL إلى الإصدار @version@ متعذر. قد يكون السبب مشكلة في حقل التعديل. الرجاء الاتصال بمضيف موقعك.', |
|
| 25 | - 'alerte_modif_info_concourante' => 'تحذير:هذه المعلومة عُدلت في مكان آخر. القيمة الحالية هي:', |
|
| 26 | - 'analyse_xml' => 'تحليل XML', |
|
| 27 | - 'annuler' => 'إلغاء', |
|
| 28 | - 'antispam_champ_vide' => 'الرجاء الإبقاء على هذا الحقل فارغاً:', |
|
| 29 | - 'articles_recents' => 'أحدث المقالات', |
|
| 30 | - 'attention_champ_mini_nb_caractères' => 'تنبيه! @nb@ حروف على الأقل', |
|
| 31 | - 'avis_1_erreur_saisie' => 'هناك خطأ في إدخالك، الرجاء التدقيق في المعلومات.', |
|
| 32 | - 'avis_archive_incorrect' => 'ملف الأرشيف ليس ملف SPIP', |
|
| 33 | - 'avis_archive_invalide' => 'ملف الأرشيف غير صالح', |
|
| 34 | - 'avis_attention' => 'تحذير!', |
|
| 35 | - 'avis_champ_incorrect_type_objet' => 'إسم حقل @name@ غير صالح لنوع العنصر @type@', |
|
| 36 | - 'avis_colonne_inexistante' => 'العمود @col@ غير موجود', |
|
| 37 | - 'avis_erreur' => 'خطأ: انظر أدناه', |
|
| 38 | - 'avis_erreur_connexion' => 'خطأ اتصال', |
|
| 39 | - 'avis_erreur_cookie' => 'مشكلة في الكعكة', |
|
| 40 | - 'avis_erreur_fonction_contexte' => 'خطأ برمجة. لا يجب المناداة على هذه الوظيفة في هذا السياق.', |
|
| 41 | - 'avis_erreur_mysql' => 'خطأ SQL ', |
|
| 42 | - 'avis_erreur_sauvegarde' => 'خطأ في النسخة الاحتياطية (@type@ @id_objet@)!', |
|
| 43 | - 'avis_erreur_visiteur' => 'هناك مشكلة في الدخول إلى المجال الخاص', |
|
| 44 | - 'avis_nb_erreurs_saisie' => 'هناك @nb@ خطأ في إدخالك، الرجاء التدقيق في المعلومات.', |
|
| 12 | + // A |
|
| 13 | + 'access_interface_graphique' => 'عودة إلى الواجهة الرسومية الكاملة', |
|
| 14 | + 'access_mode_texte' => 'عرض الواجهة النصية المبسّطة', |
|
| 15 | + 'admin_debug' => 'اكتشاف الأخطاء', |
|
| 16 | + 'admin_modifier_article' => 'تعديل هذا المقال', |
|
| 17 | + 'admin_modifier_auteur' => 'تغيير هذا المؤلف', |
|
| 18 | + 'admin_modifier_breve' => 'تعديل هذا الخبر', |
|
| 19 | + 'admin_modifier_mot' => 'تغيير هذا المفتاح', |
|
| 20 | + 'admin_modifier_rubrique' => 'تعديل هذا القسم', |
|
| 21 | + 'admin_recalculer' => 'إعادة تحديث هذه الصفحة', |
|
| 22 | + 'afficher_calendrier' => 'عرض الروزنامة', |
|
| 23 | + 'afficher_trad' => 'عرض الترجمات', |
|
| 24 | + 'alerte_maj_impossible' => '<b>تحذير!</b> ترقية قاعدة SQL إلى الإصدار @version@ متعذر. قد يكون السبب مشكلة في حقل التعديل. الرجاء الاتصال بمضيف موقعك.', |
|
| 25 | + 'alerte_modif_info_concourante' => 'تحذير:هذه المعلومة عُدلت في مكان آخر. القيمة الحالية هي:', |
|
| 26 | + 'analyse_xml' => 'تحليل XML', |
|
| 27 | + 'annuler' => 'إلغاء', |
|
| 28 | + 'antispam_champ_vide' => 'الرجاء الإبقاء على هذا الحقل فارغاً:', |
|
| 29 | + 'articles_recents' => 'أحدث المقالات', |
|
| 30 | + 'attention_champ_mini_nb_caractères' => 'تنبيه! @nb@ حروف على الأقل', |
|
| 31 | + 'avis_1_erreur_saisie' => 'هناك خطأ في إدخالك، الرجاء التدقيق في المعلومات.', |
|
| 32 | + 'avis_archive_incorrect' => 'ملف الأرشيف ليس ملف SPIP', |
|
| 33 | + 'avis_archive_invalide' => 'ملف الأرشيف غير صالح', |
|
| 34 | + 'avis_attention' => 'تحذير!', |
|
| 35 | + 'avis_champ_incorrect_type_objet' => 'إسم حقل @name@ غير صالح لنوع العنصر @type@', |
|
| 36 | + 'avis_colonne_inexistante' => 'العمود @col@ غير موجود', |
|
| 37 | + 'avis_erreur' => 'خطأ: انظر أدناه', |
|
| 38 | + 'avis_erreur_connexion' => 'خطأ اتصال', |
|
| 39 | + 'avis_erreur_cookie' => 'مشكلة في الكعكة', |
|
| 40 | + 'avis_erreur_fonction_contexte' => 'خطأ برمجة. لا يجب المناداة على هذه الوظيفة في هذا السياق.', |
|
| 41 | + 'avis_erreur_mysql' => 'خطأ SQL ', |
|
| 42 | + 'avis_erreur_sauvegarde' => 'خطأ في النسخة الاحتياطية (@type@ @id_objet@)!', |
|
| 43 | + 'avis_erreur_visiteur' => 'هناك مشكلة في الدخول إلى المجال الخاص', |
|
| 44 | + 'avis_nb_erreurs_saisie' => 'هناك @nb@ خطأ في إدخالك، الرجاء التدقيق في المعلومات.', |
|
| 45 | 45 | |
| 46 | - // B |
|
| 47 | - 'barre_a_accent_grave' => 'إدراج حرف A كبير مع نبر الإطالة', |
|
| 48 | - 'barre_aide' => 'استخدم شريط اختصارات الكتابة لإثراء تصميم صفحتك', |
|
| 49 | - 'barre_e_accent_aigu' => 'إدراج حرف E كبير مع نبر حاد', |
|
| 50 | - 'barre_eo' => 'إدراج E داخل O', |
|
| 51 | - 'barre_eo_maj' => 'إدراج E كبير داخل O كبير', |
|
| 52 | - 'barre_euro' => 'إدراج رمز €', |
|
| 53 | - 'barre_gras' => '{{غامق{{', |
|
| 54 | - 'barre_guillemets' => 'إحاطة «بعلامتي اقتباس مزدوجة»', |
|
| 55 | - 'barre_guillemets_simples' => 'وضع بين "علامتي اقتباس مزدوجة من المستوى الثاني"', |
|
| 56 | - 'barre_intertitre' => 'تحويل إلى {{{عنوان فقرة}}}', |
|
| 57 | - 'barre_italic' => '{مائل{', |
|
| 58 | - 'barre_lien' => 'تحويل إلى [وصلة هايبرتكست->http://...]', |
|
| 59 | - 'barre_lien_input' => 'الرجاء إدخال عنوان الوصلة (يمكنك إدخال عنوان نسيج على شكل http://www.mysite.com أو إدخال رقم مقال من الموقع الحالي فقط).', |
|
| 60 | - 'barre_note' => 'تحويل إلى [[حاشية]]', |
|
| 61 | - 'barre_paragraphe' => 'إنشاء فقرة', |
|
| 62 | - 'barre_quote' => '<quote>اقتباس رسالة</quote>', |
|
| 63 | - 'bouton_changer' => 'تغيير', |
|
| 64 | - 'bouton_chercher' => 'بحث', |
|
| 65 | - 'bouton_choisir' => 'تحديد', |
|
| 66 | - 'bouton_deplacer' => 'نقل', |
|
| 67 | - 'bouton_download' => 'تحميل', |
|
| 68 | - 'bouton_enregistrer' => 'إدخال', |
|
| 69 | - 'bouton_radio_desactiver_messagerie_interne' => 'إيقاف المراسلة الداخلية', |
|
| 70 | - 'bouton_radio_envoi_annonces' => 'إرسال إعلانات التحرير', |
|
| 71 | - 'bouton_radio_non_envoi_annonces' => 'عدم إرسال الإعلانات', |
|
| 72 | - 'bouton_radio_non_envoi_liste_nouveautes' => 'عدم إرسال قائمة بآخر الأخبار', |
|
| 73 | - 'bouton_recharger_page' => 'إعادة تحميل الصفحة', |
|
| 74 | - 'bouton_telecharger' => 'تحميل', |
|
| 75 | - 'bouton_upload' => 'تنزيل', |
|
| 76 | - 'bouton_valider' => 'إدخال', |
|
| 46 | + // B |
|
| 47 | + 'barre_a_accent_grave' => 'إدراج حرف A كبير مع نبر الإطالة', |
|
| 48 | + 'barre_aide' => 'استخدم شريط اختصارات الكتابة لإثراء تصميم صفحتك', |
|
| 49 | + 'barre_e_accent_aigu' => 'إدراج حرف E كبير مع نبر حاد', |
|
| 50 | + 'barre_eo' => 'إدراج E داخل O', |
|
| 51 | + 'barre_eo_maj' => 'إدراج E كبير داخل O كبير', |
|
| 52 | + 'barre_euro' => 'إدراج رمز €', |
|
| 53 | + 'barre_gras' => '{{غامق{{', |
|
| 54 | + 'barre_guillemets' => 'إحاطة «بعلامتي اقتباس مزدوجة»', |
|
| 55 | + 'barre_guillemets_simples' => 'وضع بين "علامتي اقتباس مزدوجة من المستوى الثاني"', |
|
| 56 | + 'barre_intertitre' => 'تحويل إلى {{{عنوان فقرة}}}', |
|
| 57 | + 'barre_italic' => '{مائل{', |
|
| 58 | + 'barre_lien' => 'تحويل إلى [وصلة هايبرتكست->http://...]', |
|
| 59 | + 'barre_lien_input' => 'الرجاء إدخال عنوان الوصلة (يمكنك إدخال عنوان نسيج على شكل http://www.mysite.com أو إدخال رقم مقال من الموقع الحالي فقط).', |
|
| 60 | + 'barre_note' => 'تحويل إلى [[حاشية]]', |
|
| 61 | + 'barre_paragraphe' => 'إنشاء فقرة', |
|
| 62 | + 'barre_quote' => '<quote>اقتباس رسالة</quote>', |
|
| 63 | + 'bouton_changer' => 'تغيير', |
|
| 64 | + 'bouton_chercher' => 'بحث', |
|
| 65 | + 'bouton_choisir' => 'تحديد', |
|
| 66 | + 'bouton_deplacer' => 'نقل', |
|
| 67 | + 'bouton_download' => 'تحميل', |
|
| 68 | + 'bouton_enregistrer' => 'إدخال', |
|
| 69 | + 'bouton_radio_desactiver_messagerie_interne' => 'إيقاف المراسلة الداخلية', |
|
| 70 | + 'bouton_radio_envoi_annonces' => 'إرسال إعلانات التحرير', |
|
| 71 | + 'bouton_radio_non_envoi_annonces' => 'عدم إرسال الإعلانات', |
|
| 72 | + 'bouton_radio_non_envoi_liste_nouveautes' => 'عدم إرسال قائمة بآخر الأخبار', |
|
| 73 | + 'bouton_recharger_page' => 'إعادة تحميل الصفحة', |
|
| 74 | + 'bouton_telecharger' => 'تحميل', |
|
| 75 | + 'bouton_upload' => 'تنزيل', |
|
| 76 | + 'bouton_valider' => 'إدخال', |
|
| 77 | 77 | |
| 78 | - // C |
|
| 79 | - 'cal_apresmidi' => 'بعد الظهر', |
|
| 80 | - 'cal_jour_entier' => 'يوم كامل', |
|
| 81 | - 'cal_matin' => 'الصباح', |
|
| 82 | - 'cal_par_jour' => 'روزنامة يومية', |
|
| 83 | - 'cal_par_mois' => 'روزنامة شهرية', |
|
| 84 | - 'cal_par_semaine' => 'روزنامة أسبوعية', |
|
| 85 | - 'choix_couleur_interface' => 'اللون', |
|
| 86 | - 'choix_interface' => 'اختيار الواجهة', |
|
| 87 | - 'colonne' => 'عمود', |
|
| 88 | - 'confirm_changer_statut' => 'تحذير، لقد طلبت تغيير حالة هذا العنصر. هل تريد المتابعة؟', |
|
| 89 | - 'correcte' => 'صحيح', |
|
| 78 | + // C |
|
| 79 | + 'cal_apresmidi' => 'بعد الظهر', |
|
| 80 | + 'cal_jour_entier' => 'يوم كامل', |
|
| 81 | + 'cal_matin' => 'الصباح', |
|
| 82 | + 'cal_par_jour' => 'روزنامة يومية', |
|
| 83 | + 'cal_par_mois' => 'روزنامة شهرية', |
|
| 84 | + 'cal_par_semaine' => 'روزنامة أسبوعية', |
|
| 85 | + 'choix_couleur_interface' => 'اللون', |
|
| 86 | + 'choix_interface' => 'اختيار الواجهة', |
|
| 87 | + 'colonne' => 'عمود', |
|
| 88 | + 'confirm_changer_statut' => 'تحذير، لقد طلبت تغيير حالة هذا العنصر. هل تريد المتابعة؟', |
|
| 89 | + 'correcte' => 'صحيح', |
|
| 90 | 90 | |
| 91 | - // D |
|
| 92 | - 'date_aujourdhui' => 'اليوم', |
|
| 93 | - 'date_avant_jc' => 'قبل الميلاد', |
|
| 94 | - 'date_dans' => 'بعد @delai@', |
|
| 95 | - 'date_de_mois_1' => '@j@ @nommois@', |
|
| 96 | - 'date_de_mois_10' => '@j@ @nommois@', |
|
| 97 | - 'date_de_mois_11' => '@j@ @nommois@', |
|
| 98 | - 'date_de_mois_12' => '@j@ @nommois@', |
|
| 99 | - 'date_de_mois_2' => '@j@ @nommois@', |
|
| 100 | - 'date_de_mois_3' => '@j@ @nommois@', |
|
| 101 | - 'date_de_mois_4' => '@j@ @nommois@', |
|
| 102 | - 'date_de_mois_5' => '@j@ @nommois@', |
|
| 103 | - 'date_de_mois_6' => '@j@ @nommois@', |
|
| 104 | - 'date_de_mois_7' => '@j@ @nommois@', |
|
| 105 | - 'date_de_mois_8' => '@j@ @nommois@', |
|
| 106 | - 'date_de_mois_9' => '@j@ @nommois@', |
|
| 107 | - 'date_demain' => 'غداً', |
|
| 108 | - 'date_fmt_heures_minutes' => '@h@ و@m@ دقيقة', |
|
| 109 | - 'date_fmt_heures_minutes_court' => '@h@h@m@', |
|
| 110 | - 'date_fmt_jour' => '@nomjour@ @jour@', |
|
| 111 | - 'date_fmt_jour_heure' => '@jour@ الساعة @heure@', |
|
| 112 | - 'date_fmt_jour_heure_debut_fin' => 'في @jour@ من @heure_debut@ الى @heure_fin@', |
|
| 113 | - 'date_fmt_jour_heure_debut_fin_abbr' => 'في @dtstart@@jour@ من @heure_debut@@dtabbr@ الى @dtend@@heure_fin@@dtabbr@', |
|
| 114 | - 'date_fmt_jour_mois' => '@jour@ @nommois@', |
|
| 115 | - 'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@', |
|
| 116 | - 'date_fmt_mois_annee' => '@nommois@ @annee@', |
|
| 117 | - 'date_fmt_nomjour' => '@nomjour@ @date@', |
|
| 118 | - 'date_fmt_nomjour_date' => 'في @nomjour@ @date@', |
|
| 119 | - 'date_fmt_periode' => 'من @date_debut@ الى @date_fin@', |
|
| 120 | - 'date_fmt_periode_abbr' => 'من @dtart@@date_debut@@dtabbr@ الى @dtend@@date_fin@@dtabbr@', |
|
| 121 | - 'date_fmt_periode_from' => 'من', |
|
| 122 | - 'date_fmt_periode_to' => 'الى', |
|
| 123 | - 'date_fmt_saison_annee' => '@saison@ @annee@', |
|
| 124 | - 'date_heures' => 'ساعة', |
|
| 125 | - 'date_hier' => 'البارحة', |
|
| 126 | - 'date_il_y_a' => 'منذ @delai@', |
|
| 127 | - 'date_jnum1' => '1', |
|
| 128 | - 'date_jnum10' => '10', |
|
| 129 | - 'date_jnum11' => '11', |
|
| 130 | - 'date_jnum12' => '12', |
|
| 131 | - 'date_jnum13' => '13', |
|
| 132 | - 'date_jnum14' => '14', |
|
| 133 | - 'date_jnum15' => '15', |
|
| 134 | - 'date_jnum16' => '16', |
|
| 135 | - 'date_jnum17' => '17', |
|
| 136 | - 'date_jnum18' => '18', |
|
| 137 | - 'date_jnum19' => '19', |
|
| 138 | - 'date_jnum2' => '2', |
|
| 139 | - 'date_jnum20' => '20', |
|
| 140 | - 'date_jnum21' => '21', |
|
| 141 | - 'date_jnum22' => '22', |
|
| 142 | - 'date_jnum23' => '23', |
|
| 143 | - 'date_jnum24' => '24', |
|
| 144 | - 'date_jnum25' => '25', |
|
| 145 | - 'date_jnum26' => '26', |
|
| 146 | - 'date_jnum27' => '27', |
|
| 147 | - 'date_jnum28' => '28', |
|
| 148 | - 'date_jnum29' => '29', |
|
| 149 | - 'date_jnum3' => '3', |
|
| 150 | - 'date_jnum30' => '30', |
|
| 151 | - 'date_jnum31' => '31', |
|
| 152 | - 'date_jnum4' => '4', |
|
| 153 | - 'date_jnum5' => '5', |
|
| 154 | - 'date_jnum6' => '6', |
|
| 155 | - 'date_jnum7' => '7', |
|
| 156 | - 'date_jnum8' => '8', |
|
| 157 | - 'date_jnum9' => '9', |
|
| 158 | - 'date_jour_1' => 'الأحد', |
|
| 159 | - 'date_jour_1_abbr' => 'أحد', |
|
| 160 | - 'date_jour_1_initiale' => 'أحد', |
|
| 161 | - 'date_jour_2' => 'الاثنين', |
|
| 162 | - 'date_jour_2_abbr' => 'اثنين', |
|
| 163 | - 'date_jour_2_initiale' => 'اثنين', |
|
| 164 | - 'date_jour_3' => 'الثلاثاء', |
|
| 165 | - 'date_jour_3_abbr' => 'ثلاثاء', |
|
| 166 | - 'date_jour_3_initiale' => 'ثلاثاء', |
|
| 167 | - 'date_jour_4' => 'الأربعاء', |
|
| 168 | - 'date_jour_4_abbr' => 'أربعاء', |
|
| 169 | - 'date_jour_4_initiale' => 'أربعاء', |
|
| 170 | - 'date_jour_5' => 'الخميس', |
|
| 171 | - 'date_jour_5_abbr' => 'خميس', |
|
| 172 | - 'date_jour_5_initiale' => 'خميس', |
|
| 173 | - 'date_jour_6' => 'الجمعة', |
|
| 174 | - 'date_jour_6_abbr' => 'جمعة', |
|
| 175 | - 'date_jour_6_initiale' => 'جمعة', |
|
| 176 | - 'date_jour_7' => 'السبت', |
|
| 177 | - 'date_jour_7_abbr' => 'سبت', |
|
| 178 | - 'date_jour_7_initiale' => 'سبت', |
|
| 179 | - 'date_jours' => 'يوم', |
|
| 180 | - 'date_minutes' => 'دقيقة', |
|
| 181 | - 'date_mois' => 'شهر', |
|
| 182 | - 'date_mois_1' => 'كانون الثاني (يناير)', |
|
| 183 | - 'date_mois_10' => 'تشرين الأول (أكتوبر)', |
|
| 184 | - 'date_mois_10_abbr' => 'ت١', |
|
| 185 | - 'date_mois_11' => 'تشرين الثاني (نوفمبر)', |
|
| 186 | - 'date_mois_11_abbr' => 'ت٢', |
|
| 187 | - 'date_mois_12' => 'كانون الأول (ديسمبر)', |
|
| 188 | - 'date_mois_12_abbr' => 'ك١', |
|
| 189 | - 'date_mois_1_abbr' => 'ك٢', |
|
| 190 | - 'date_mois_2' => 'شباط (فبراير)', |
|
| 191 | - 'date_mois_2_abbr' => 'شباط', |
|
| 192 | - 'date_mois_3' => 'آذار (مارس)', |
|
| 193 | - 'date_mois_3_abbr' => 'آذار', |
|
| 194 | - 'date_mois_4' => 'نيسان (أبريل)', |
|
| 195 | - 'date_mois_4_abbr' => 'نيسان', |
|
| 196 | - 'date_mois_5' => 'أيار (مايو)', |
|
| 197 | - 'date_mois_5_abbr' => 'أيار', |
|
| 198 | - 'date_mois_6' => 'حزيران (يونيو)', |
|
| 199 | - 'date_mois_6_abbr' => 'جزيران', |
|
| 200 | - 'date_mois_7' => 'تموز (يوليو)', |
|
| 201 | - 'date_mois_7_abbr' => 'تموز', |
|
| 202 | - 'date_mois_8' => 'آب (أغسطس)', |
|
| 203 | - 'date_mois_8_abbr' => 'آب', |
|
| 204 | - 'date_mois_9' => 'أيلول (سبتمبر)', |
|
| 205 | - 'date_mois_9_abbr' => 'أيلول', |
|
| 206 | - 'date_saison_1' => 'الشتاء', |
|
| 207 | - 'date_saison_2' => 'الربيع', |
|
| 208 | - 'date_saison_3' => 'الصيف', |
|
| 209 | - 'date_saison_4' => 'الخريف', |
|
| 210 | - 'date_secondes' => 'ثانية', |
|
| 211 | - 'date_semaines' => 'أسبوع', |
|
| 212 | - 'date_un_mois' => 'شهر', |
|
| 213 | - 'date_une_heure' => 'ساعة', |
|
| 214 | - 'date_une_minute' => 'دقيقة', |
|
| 215 | - 'date_une_seconde' => 'ثانية', |
|
| 216 | - 'date_une_semaine' => 'أسبوع', |
|
| 217 | - 'dirs_commencer' => 'للبدء فعلاً بعملية التثبيت', |
|
| 218 | - 'dirs_preliminaire' => 'تمهيد: <b>إعداد امتيازات الدخول</b>', |
|
| 219 | - 'dirs_probleme_droits' => 'مشكلة في امتيازات الدخول', |
|
| 220 | - 'dirs_repertoires_absents' => '<p><b>لم يتم العثور على الأدلة التالية: </b></p><ul>@bad_dirs@</ul> |
|
| 91 | + // D |
|
| 92 | + 'date_aujourdhui' => 'اليوم', |
|
| 93 | + 'date_avant_jc' => 'قبل الميلاد', |
|
| 94 | + 'date_dans' => 'بعد @delai@', |
|
| 95 | + 'date_de_mois_1' => '@j@ @nommois@', |
|
| 96 | + 'date_de_mois_10' => '@j@ @nommois@', |
|
| 97 | + 'date_de_mois_11' => '@j@ @nommois@', |
|
| 98 | + 'date_de_mois_12' => '@j@ @nommois@', |
|
| 99 | + 'date_de_mois_2' => '@j@ @nommois@', |
|
| 100 | + 'date_de_mois_3' => '@j@ @nommois@', |
|
| 101 | + 'date_de_mois_4' => '@j@ @nommois@', |
|
| 102 | + 'date_de_mois_5' => '@j@ @nommois@', |
|
| 103 | + 'date_de_mois_6' => '@j@ @nommois@', |
|
| 104 | + 'date_de_mois_7' => '@j@ @nommois@', |
|
| 105 | + 'date_de_mois_8' => '@j@ @nommois@', |
|
| 106 | + 'date_de_mois_9' => '@j@ @nommois@', |
|
| 107 | + 'date_demain' => 'غداً', |
|
| 108 | + 'date_fmt_heures_minutes' => '@h@ و@m@ دقيقة', |
|
| 109 | + 'date_fmt_heures_minutes_court' => '@h@h@m@', |
|
| 110 | + 'date_fmt_jour' => '@nomjour@ @jour@', |
|
| 111 | + 'date_fmt_jour_heure' => '@jour@ الساعة @heure@', |
|
| 112 | + 'date_fmt_jour_heure_debut_fin' => 'في @jour@ من @heure_debut@ الى @heure_fin@', |
|
| 113 | + 'date_fmt_jour_heure_debut_fin_abbr' => 'في @dtstart@@jour@ من @heure_debut@@dtabbr@ الى @dtend@@heure_fin@@dtabbr@', |
|
| 114 | + 'date_fmt_jour_mois' => '@jour@ @nommois@', |
|
| 115 | + 'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@', |
|
| 116 | + 'date_fmt_mois_annee' => '@nommois@ @annee@', |
|
| 117 | + 'date_fmt_nomjour' => '@nomjour@ @date@', |
|
| 118 | + 'date_fmt_nomjour_date' => 'في @nomjour@ @date@', |
|
| 119 | + 'date_fmt_periode' => 'من @date_debut@ الى @date_fin@', |
|
| 120 | + 'date_fmt_periode_abbr' => 'من @dtart@@date_debut@@dtabbr@ الى @dtend@@date_fin@@dtabbr@', |
|
| 121 | + 'date_fmt_periode_from' => 'من', |
|
| 122 | + 'date_fmt_periode_to' => 'الى', |
|
| 123 | + 'date_fmt_saison_annee' => '@saison@ @annee@', |
|
| 124 | + 'date_heures' => 'ساعة', |
|
| 125 | + 'date_hier' => 'البارحة', |
|
| 126 | + 'date_il_y_a' => 'منذ @delai@', |
|
| 127 | + 'date_jnum1' => '1', |
|
| 128 | + 'date_jnum10' => '10', |
|
| 129 | + 'date_jnum11' => '11', |
|
| 130 | + 'date_jnum12' => '12', |
|
| 131 | + 'date_jnum13' => '13', |
|
| 132 | + 'date_jnum14' => '14', |
|
| 133 | + 'date_jnum15' => '15', |
|
| 134 | + 'date_jnum16' => '16', |
|
| 135 | + 'date_jnum17' => '17', |
|
| 136 | + 'date_jnum18' => '18', |
|
| 137 | + 'date_jnum19' => '19', |
|
| 138 | + 'date_jnum2' => '2', |
|
| 139 | + 'date_jnum20' => '20', |
|
| 140 | + 'date_jnum21' => '21', |
|
| 141 | + 'date_jnum22' => '22', |
|
| 142 | + 'date_jnum23' => '23', |
|
| 143 | + 'date_jnum24' => '24', |
|
| 144 | + 'date_jnum25' => '25', |
|
| 145 | + 'date_jnum26' => '26', |
|
| 146 | + 'date_jnum27' => '27', |
|
| 147 | + 'date_jnum28' => '28', |
|
| 148 | + 'date_jnum29' => '29', |
|
| 149 | + 'date_jnum3' => '3', |
|
| 150 | + 'date_jnum30' => '30', |
|
| 151 | + 'date_jnum31' => '31', |
|
| 152 | + 'date_jnum4' => '4', |
|
| 153 | + 'date_jnum5' => '5', |
|
| 154 | + 'date_jnum6' => '6', |
|
| 155 | + 'date_jnum7' => '7', |
|
| 156 | + 'date_jnum8' => '8', |
|
| 157 | + 'date_jnum9' => '9', |
|
| 158 | + 'date_jour_1' => 'الأحد', |
|
| 159 | + 'date_jour_1_abbr' => 'أحد', |
|
| 160 | + 'date_jour_1_initiale' => 'أحد', |
|
| 161 | + 'date_jour_2' => 'الاثنين', |
|
| 162 | + 'date_jour_2_abbr' => 'اثنين', |
|
| 163 | + 'date_jour_2_initiale' => 'اثنين', |
|
| 164 | + 'date_jour_3' => 'الثلاثاء', |
|
| 165 | + 'date_jour_3_abbr' => 'ثلاثاء', |
|
| 166 | + 'date_jour_3_initiale' => 'ثلاثاء', |
|
| 167 | + 'date_jour_4' => 'الأربعاء', |
|
| 168 | + 'date_jour_4_abbr' => 'أربعاء', |
|
| 169 | + 'date_jour_4_initiale' => 'أربعاء', |
|
| 170 | + 'date_jour_5' => 'الخميس', |
|
| 171 | + 'date_jour_5_abbr' => 'خميس', |
|
| 172 | + 'date_jour_5_initiale' => 'خميس', |
|
| 173 | + 'date_jour_6' => 'الجمعة', |
|
| 174 | + 'date_jour_6_abbr' => 'جمعة', |
|
| 175 | + 'date_jour_6_initiale' => 'جمعة', |
|
| 176 | + 'date_jour_7' => 'السبت', |
|
| 177 | + 'date_jour_7_abbr' => 'سبت', |
|
| 178 | + 'date_jour_7_initiale' => 'سبت', |
|
| 179 | + 'date_jours' => 'يوم', |
|
| 180 | + 'date_minutes' => 'دقيقة', |
|
| 181 | + 'date_mois' => 'شهر', |
|
| 182 | + 'date_mois_1' => 'كانون الثاني (يناير)', |
|
| 183 | + 'date_mois_10' => 'تشرين الأول (أكتوبر)', |
|
| 184 | + 'date_mois_10_abbr' => 'ت١', |
|
| 185 | + 'date_mois_11' => 'تشرين الثاني (نوفمبر)', |
|
| 186 | + 'date_mois_11_abbr' => 'ت٢', |
|
| 187 | + 'date_mois_12' => 'كانون الأول (ديسمبر)', |
|
| 188 | + 'date_mois_12_abbr' => 'ك١', |
|
| 189 | + 'date_mois_1_abbr' => 'ك٢', |
|
| 190 | + 'date_mois_2' => 'شباط (فبراير)', |
|
| 191 | + 'date_mois_2_abbr' => 'شباط', |
|
| 192 | + 'date_mois_3' => 'آذار (مارس)', |
|
| 193 | + 'date_mois_3_abbr' => 'آذار', |
|
| 194 | + 'date_mois_4' => 'نيسان (أبريل)', |
|
| 195 | + 'date_mois_4_abbr' => 'نيسان', |
|
| 196 | + 'date_mois_5' => 'أيار (مايو)', |
|
| 197 | + 'date_mois_5_abbr' => 'أيار', |
|
| 198 | + 'date_mois_6' => 'حزيران (يونيو)', |
|
| 199 | + 'date_mois_6_abbr' => 'جزيران', |
|
| 200 | + 'date_mois_7' => 'تموز (يوليو)', |
|
| 201 | + 'date_mois_7_abbr' => 'تموز', |
|
| 202 | + 'date_mois_8' => 'آب (أغسطس)', |
|
| 203 | + 'date_mois_8_abbr' => 'آب', |
|
| 204 | + 'date_mois_9' => 'أيلول (سبتمبر)', |
|
| 205 | + 'date_mois_9_abbr' => 'أيلول', |
|
| 206 | + 'date_saison_1' => 'الشتاء', |
|
| 207 | + 'date_saison_2' => 'الربيع', |
|
| 208 | + 'date_saison_3' => 'الصيف', |
|
| 209 | + 'date_saison_4' => 'الخريف', |
|
| 210 | + 'date_secondes' => 'ثانية', |
|
| 211 | + 'date_semaines' => 'أسبوع', |
|
| 212 | + 'date_un_mois' => 'شهر', |
|
| 213 | + 'date_une_heure' => 'ساعة', |
|
| 214 | + 'date_une_minute' => 'دقيقة', |
|
| 215 | + 'date_une_seconde' => 'ثانية', |
|
| 216 | + 'date_une_semaine' => 'أسبوع', |
|
| 217 | + 'dirs_commencer' => 'للبدء فعلاً بعملية التثبيت', |
|
| 218 | + 'dirs_preliminaire' => 'تمهيد: <b>إعداد امتيازات الدخول</b>', |
|
| 219 | + 'dirs_probleme_droits' => 'مشكلة في امتيازات الدخول', |
|
| 220 | + 'dirs_repertoires_absents' => '<p><b>لم يتم العثور على الأدلة التالية: </b></p><ul>@bad_dirs@</ul> |
|
| 221 | 221 | <p>قد يكون السبب خطأ في اعتماد الحروف الكبيرة أو الصغيرة في أسمائها. الرجاء التأكد من أن الحروف الكبيرة والصغيرة في أسماء هذه الأدلة تناسب ما هو معروض أعلاه؛ إذا لم يكن الأمر كذلك، الرجاء إعادة تسمية الأدلة بواسطة برنامج FTP لتصحيح الخطأ. |
| 222 | 222 | <p>بعد تنفيذ هذه العملية يمكنك </p>', |
| 223 | - 'dirs_repertoires_suivants' => '<p><b>الأدلة التالية ممنوعة على الكتابة: </b></p |
|
| 223 | + 'dirs_repertoires_suivants' => '<p><b>الأدلة التالية ممنوعة على الكتابة: </b></p |
|
| 224 | 224 | <ul>@bad_dirs@</ul> |
| 225 | 225 | <p>لحل هذه المشكلة، استخدم برنامج FTP لإعداد امتيازات الدخول لكل من هذه الأدلة. ويوضح دليل الاستخدام هذه العملية بالتفصيل. |
| 226 | 226 | <p>بعد إتمام هذه العملية يمكنك</p>', |
| 227 | - 'double_occurrence' => 'ظهور مكرر لعلامة @balise@', |
|
| 227 | + 'double_occurrence' => 'ظهور مكرر لعلامة @balise@', |
|
| 228 | 228 | |
| 229 | - // E |
|
| 230 | - 'en_cours' => 'جاري', |
|
| 231 | - 'envoi_via_le_site' => 'إرسال عبر الموقع', |
|
| 232 | - 'erreur' => 'خطأ', |
|
| 233 | - 'erreur_balise_non_fermee' => 'آخر علامة غير مغلقة:', |
|
| 234 | - 'erreur_technique_ajaxform' => 'عفواً. حدث خطأ غير متوقع خلال إرسال الاستمارة. الرجاء المحاولة من جديد.', |
|
| 235 | - 'erreur_technique_enregistrement_champs' => 'خطأ تقني منع التسجيل السليم للحقل @champs@. ', |
|
| 236 | - 'erreur_technique_enregistrement_impossible' => 'خطأ تقني منع التسجيل.', |
|
| 237 | - 'erreur_texte' => 'خطأ (أخطاء)', |
|
| 238 | - 'etape' => 'خطوة', |
|
| 229 | + // E |
|
| 230 | + 'en_cours' => 'جاري', |
|
| 231 | + 'envoi_via_le_site' => 'إرسال عبر الموقع', |
|
| 232 | + 'erreur' => 'خطأ', |
|
| 233 | + 'erreur_balise_non_fermee' => 'آخر علامة غير مغلقة:', |
|
| 234 | + 'erreur_technique_ajaxform' => 'عفواً. حدث خطأ غير متوقع خلال إرسال الاستمارة. الرجاء المحاولة من جديد.', |
|
| 235 | + 'erreur_technique_enregistrement_champs' => 'خطأ تقني منع التسجيل السليم للحقل @champs@. ', |
|
| 236 | + 'erreur_technique_enregistrement_impossible' => 'خطأ تقني منع التسجيل.', |
|
| 237 | + 'erreur_texte' => 'خطأ (أخطاء)', |
|
| 238 | + 'etape' => 'خطوة', |
|
| 239 | 239 | |
| 240 | - // F |
|
| 241 | - 'fichier_introuvable' => 'لا يمكن العثور على الملف @fichier@', |
|
| 242 | - 'fonction_introuvable' => 'دالة @fonction@() غير موجودة.', |
|
| 243 | - 'form_auteur_confirmation' => 'تأكيد عنوان البريد الالكتروني', |
|
| 244 | - 'form_auteur_email_modifie' => 'تغير عنوان بريدك.', |
|
| 245 | - 'form_auteur_envoi_mail_confirmation' => 'لفد تم ارسال بريد تأكيد الى @email@. عليك زيارة عنوان الموقع الموجود في الرسالة للتصديق على عنوان بريدك.', |
|
| 246 | - 'form_auteur_mail_confirmation' => 'أهلاً وسهلاً |
|
| 240 | + // F |
|
| 241 | + 'fichier_introuvable' => 'لا يمكن العثور على الملف @fichier@', |
|
| 242 | + 'fonction_introuvable' => 'دالة @fonction@() غير موجودة.', |
|
| 243 | + 'form_auteur_confirmation' => 'تأكيد عنوان البريد الالكتروني', |
|
| 244 | + 'form_auteur_email_modifie' => 'تغير عنوان بريدك.', |
|
| 245 | + 'form_auteur_envoi_mail_confirmation' => 'لفد تم ارسال بريد تأكيد الى @email@. عليك زيارة عنوان الموقع الموجود في الرسالة للتصديق على عنوان بريدك.', |
|
| 246 | + 'form_auteur_mail_confirmation' => 'أهلاً وسهلاً |
|
| 247 | 247 | |
| 248 | 248 | لقد طلبت تغيير عنوان بريدك. |
| 249 | 249 | للتصديق على العنوان الجديد، يكفي الاتصال |
@@ -252,347 +252,347 @@ discard block |
||
| 252 | 252 | |
| 253 | 253 | @url@ |
| 254 | 254 | ', |
| 255 | - 'form_deja_inscrit' => 'سبق لك التسجيل.', |
|
| 256 | - 'form_email_non_valide' => 'عنوانك البريدي غير صالح.', |
|
| 257 | - 'form_forum_access_refuse' => 'لم تعد تملك امتياز الدحول إلى هذا الموقع.', |
|
| 258 | - 'form_forum_bonjour' => 'مرحباً @nom@،', |
|
| 259 | - 'form_forum_confirmer_email' => 'لتأكيد عنوان بريدك، إذهب الى:@url_confirm@', |
|
| 260 | - 'form_forum_email_deja_enregistre' => 'سبق تسجيل هذا العنوان البريدي، يمكنك إذاً استخدام كلمة سرك الاعتيادية.', |
|
| 261 | - 'form_forum_identifiant_mail' => 'لقد تم إرسال معرّفك الجديد بالبريد الالكتروني.', |
|
| 262 | - 'form_forum_identifiants' => 'بيانات الاتصال الشخصية', |
|
| 263 | - 'form_forum_indiquer_nom_email' => 'قم بإدخال اسمك وعنوانك البريدي هنا. ستحصل على بيانات اتصالك قريباً في البريد الإلكتروني.', |
|
| 264 | - 'form_forum_login' => 'المعرّف:', |
|
| 265 | - 'form_forum_message_auto' => '(هذه رسالة آلية)', |
|
| 266 | - 'form_forum_pass' => 'كلمة السر:', |
|
| 267 | - 'form_forum_probleme_mail' => 'مشكلة بريد إلكتروني: لا يمكن إرسال بيانات الدخول.', |
|
| 268 | - 'form_forum_voici1' => 'هذه هي بياناتك للاشتراك في نشاط |
|
| 255 | + 'form_deja_inscrit' => 'سبق لك التسجيل.', |
|
| 256 | + 'form_email_non_valide' => 'عنوانك البريدي غير صالح.', |
|
| 257 | + 'form_forum_access_refuse' => 'لم تعد تملك امتياز الدحول إلى هذا الموقع.', |
|
| 258 | + 'form_forum_bonjour' => 'مرحباً @nom@،', |
|
| 259 | + 'form_forum_confirmer_email' => 'لتأكيد عنوان بريدك، إذهب الى:@url_confirm@', |
|
| 260 | + 'form_forum_email_deja_enregistre' => 'سبق تسجيل هذا العنوان البريدي، يمكنك إذاً استخدام كلمة سرك الاعتيادية.', |
|
| 261 | + 'form_forum_identifiant_mail' => 'لقد تم إرسال معرّفك الجديد بالبريد الالكتروني.', |
|
| 262 | + 'form_forum_identifiants' => 'بيانات الاتصال الشخصية', |
|
| 263 | + 'form_forum_indiquer_nom_email' => 'قم بإدخال اسمك وعنوانك البريدي هنا. ستحصل على بيانات اتصالك قريباً في البريد الإلكتروني.', |
|
| 264 | + 'form_forum_login' => 'المعرّف:', |
|
| 265 | + 'form_forum_message_auto' => '(هذه رسالة آلية)', |
|
| 266 | + 'form_forum_pass' => 'كلمة السر:', |
|
| 267 | + 'form_forum_probleme_mail' => 'مشكلة بريد إلكتروني: لا يمكن إرسال بيانات الدخول.', |
|
| 268 | + 'form_forum_voici1' => 'هذه هي بياناتك للاشتراك في نشاط |
|
| 269 | 269 | الموقع "@nom_site_spip@" (@adresse_site@):', |
| 270 | - 'form_forum_voici2' => 'هذه هي بياناتك لاقتراح مقالات |
|
| 270 | + 'form_forum_voici2' => 'هذه هي بياناتك لاقتراح مقالات |
|
| 271 | 271 | للموقع "@nom_site_spip@" (@adresse_login@):', |
| 272 | - 'form_indiquer_email' => 'الرجاء إدخال عنوانك الإلكتروني.', |
|
| 273 | - 'form_indiquer_nom' => 'الرجاء إدخال اسمك.', |
|
| 274 | - 'form_indiquer_nom_site' => 'الرجاء إدخال إسم موقعك.', |
|
| 275 | - 'form_pet_deja_enregistre' => 'سبق تسجيل هذا الموقع', |
|
| 276 | - 'form_pet_signature_pasprise' => 'تم تجاهل توقيعك.', |
|
| 277 | - 'form_prop_confirmer_envoi' => 'تأكيد الإرسال', |
|
| 278 | - 'form_prop_description' => 'وصف/تعليق', |
|
| 279 | - 'form_prop_enregistre' => 'تم تسجيل اقتراحك، سوف يظهر بعد تصديقه من قبل مسئولي هذا الموقع.', |
|
| 280 | - 'form_prop_envoyer' => 'ابعث برسالة', |
|
| 281 | - 'form_prop_indiquer_email' => 'الرجاء إدخال عنوان بريد إلكتروني صالح', |
|
| 282 | - 'form_prop_indiquer_nom_site' => 'الرجاء إدخال اسم الموقع.', |
|
| 283 | - 'form_prop_indiquer_sujet' => 'الرجاء إدخال موضوع', |
|
| 284 | - 'form_prop_message_envoye' => 'تم بعث الرسالة', |
|
| 285 | - 'form_prop_non_enregistre' => 'لم يتم تسجيل اقتراحك.', |
|
| 286 | - 'form_prop_sujet' => 'الموضوع', |
|
| 287 | - 'form_prop_url_site' => 'عنوان الموقع', |
|
| 288 | - 'format_date_attendu' => 'إدخال تاريخ بتنسيق jj/mm/aaaa.', |
|
| 289 | - 'format_date_incorrecte' => 'التاريخ او تنسيقه غير صحيح', |
|
| 290 | - 'format_heure_attendu' => 'إدخال ساعة بتنسيق hh:mm.', |
|
| 291 | - 'format_heure_incorrecte' => 'الساعة او تنسيقها غير صحيح', |
|
| 292 | - 'forum_non_inscrit' => 'إما انك غير مسجل أو هناك خطأ في العنوان أو كلمة السر.', |
|
| 293 | - 'forum_par_auteur' => 'من @auteur@', |
|
| 294 | - 'forum_titre_erreur' => 'خطأ...', |
|
| 272 | + 'form_indiquer_email' => 'الرجاء إدخال عنوانك الإلكتروني.', |
|
| 273 | + 'form_indiquer_nom' => 'الرجاء إدخال اسمك.', |
|
| 274 | + 'form_indiquer_nom_site' => 'الرجاء إدخال إسم موقعك.', |
|
| 275 | + 'form_pet_deja_enregistre' => 'سبق تسجيل هذا الموقع', |
|
| 276 | + 'form_pet_signature_pasprise' => 'تم تجاهل توقيعك.', |
|
| 277 | + 'form_prop_confirmer_envoi' => 'تأكيد الإرسال', |
|
| 278 | + 'form_prop_description' => 'وصف/تعليق', |
|
| 279 | + 'form_prop_enregistre' => 'تم تسجيل اقتراحك، سوف يظهر بعد تصديقه من قبل مسئولي هذا الموقع.', |
|
| 280 | + 'form_prop_envoyer' => 'ابعث برسالة', |
|
| 281 | + 'form_prop_indiquer_email' => 'الرجاء إدخال عنوان بريد إلكتروني صالح', |
|
| 282 | + 'form_prop_indiquer_nom_site' => 'الرجاء إدخال اسم الموقع.', |
|
| 283 | + 'form_prop_indiquer_sujet' => 'الرجاء إدخال موضوع', |
|
| 284 | + 'form_prop_message_envoye' => 'تم بعث الرسالة', |
|
| 285 | + 'form_prop_non_enregistre' => 'لم يتم تسجيل اقتراحك.', |
|
| 286 | + 'form_prop_sujet' => 'الموضوع', |
|
| 287 | + 'form_prop_url_site' => 'عنوان الموقع', |
|
| 288 | + 'format_date_attendu' => 'إدخال تاريخ بتنسيق jj/mm/aaaa.', |
|
| 289 | + 'format_date_incorrecte' => 'التاريخ او تنسيقه غير صحيح', |
|
| 290 | + 'format_heure_attendu' => 'إدخال ساعة بتنسيق hh:mm.', |
|
| 291 | + 'format_heure_incorrecte' => 'الساعة او تنسيقها غير صحيح', |
|
| 292 | + 'forum_non_inscrit' => 'إما انك غير مسجل أو هناك خطأ في العنوان أو كلمة السر.', |
|
| 293 | + 'forum_par_auteur' => 'من @auteur@', |
|
| 294 | + 'forum_titre_erreur' => 'خطأ...', |
|
| 295 | 295 | |
| 296 | - // I |
|
| 297 | - 'ical_texte_rss_articles' => 'يوجد ملف «الترخيص الخلفي» لمقالات هذا الموقع على العنوان: ', |
|
| 298 | - 'ical_texte_rss_articles2' => 'يمكنك أيضاً الحصول على ملفات «الترخيص الخلفي» لمقالات كل قسم في الموقع:', |
|
| 299 | - 'ical_texte_rss_breves' => 'يوجد كذلك ملف يحتوي على أخبار الموقع. وبإدخال رقم قسم ما، تحصل على أخبار هذا القسم فقط.', |
|
| 300 | - 'icone_a_suivre' => 'للمتابعة', |
|
| 301 | - 'icone_admin_site' => 'إدارة الموقع', |
|
| 302 | - 'icone_agenda' => 'المفكرة', |
|
| 303 | - 'icone_aide_ligne' => 'التعليمات الفورية', |
|
| 304 | - 'icone_articles' => 'المقالات', |
|
| 305 | - 'icone_auteurs' => 'المؤلفون', |
|
| 306 | - 'icone_brouteur' => 'تصفح سريع', |
|
| 307 | - 'icone_configuration_site' => 'إعداد', |
|
| 308 | - 'icone_configurer_site' => 'إعداد موقعك', |
|
| 309 | - 'icone_creer_nouvel_auteur' => 'إضافة مؤلف جديد', |
|
| 310 | - 'icone_creer_rubrique' => 'إنشاء قسم', |
|
| 311 | - 'icone_creer_sous_rubrique' => 'إنشاء قسم فرعي', |
|
| 312 | - 'icone_deconnecter' => 'خروج', |
|
| 313 | - 'icone_discussions' => 'نقاشات', |
|
| 314 | - 'icone_doc_rubrique' => 'مستندات الأقسام', |
|
| 315 | - 'icone_ecrire_article' => 'كتابة مقال جديد', |
|
| 316 | - 'icone_edition_site' => 'تحرير الموقع', |
|
| 317 | - 'icone_gestion_langues' => 'إدارة اللغات', |
|
| 318 | - 'icone_informations_personnelles' => 'المعلومات الشخصية', |
|
| 319 | - 'icone_interface_complet' => 'واجهة كاملة', |
|
| 320 | - 'icone_interface_simple' => 'واجهة مبسّطة', |
|
| 321 | - 'icone_maintenance_site' => 'صيانة الموقع', |
|
| 322 | - 'icone_messagerie_personnelle' => 'المراسلة الشخصية', |
|
| 323 | - 'icone_repartition_debut' => 'إظهار التوزيع منذ البداية', |
|
| 324 | - 'icone_rubriques' => 'الأقسام', |
|
| 325 | - 'icone_sauver_site' => 'نسخة احتياطية للموقع', |
|
| 326 | - 'icone_site_entier' => 'الموقع بالكامل', |
|
| 327 | - 'icone_sites_references' => 'المواقع المبوبة', |
|
| 328 | - 'icone_statistiques' => 'إحصاءات الموقع', |
|
| 329 | - 'icone_suivi_activite' => 'متابعة نشاط الموقع', |
|
| 330 | - 'icone_suivi_actualite' => 'تطور الموقع', |
|
| 331 | - 'icone_suivi_pettions' => 'متابعة/إدارة العرائض', |
|
| 332 | - 'icone_suivi_revisions' => 'تعديل المقالات', |
|
| 333 | - 'icone_supprimer_document' => 'حذف هذا المستند', |
|
| 334 | - 'icone_supprimer_image' => 'حذف هذه الصورة', |
|
| 335 | - 'icone_tous_articles' => 'كل مقالاتك', |
|
| 336 | - 'icone_tous_auteur' => 'جميع المؤلفين', |
|
| 337 | - 'icone_tous_visiteur' => 'جميع الزوار', |
|
| 338 | - 'icone_visiter_site' => 'تصفح الموقع العمومي', |
|
| 339 | - 'icone_voir_en_ligne' => 'عرض مباشر', |
|
| 340 | - 'img_indisponible' => 'صورة غير متوفرة', |
|
| 341 | - 'impossible' => 'مستحيل', |
|
| 342 | - 'info_a_suivre' => 'للمتابعة»', |
|
| 343 | - 'info_acces_interdit' => 'الدخول محظور', |
|
| 344 | - 'info_acces_refuse' => 'دخول محظور', |
|
| 345 | - 'info_action' => 'عملية: @action@', |
|
| 346 | - 'info_administrer_rubriques' => 'يمكنك إدارة هذا القسم وأقسامه الفرعية', |
|
| 347 | - 'info_adresse_non_indiquee' => 'لم تدخل أي عنوان لاختباره!', |
|
| 348 | - 'info_aide' => 'تعليمات :', |
|
| 349 | - 'info_ajouter_mot' => 'إضافة هذا المفتاح', |
|
| 350 | - 'info_annonce' => 'إعلان', |
|
| 351 | - 'info_annonces_generales' => 'إعلانات عامة:', |
|
| 352 | - 'info_article_propose' => 'مقال مقترح', |
|
| 353 | - 'info_article_publie' => 'مقال منشور', |
|
| 354 | - 'info_article_redaction' => 'مقال قيد التحرير', |
|
| 355 | - 'info_article_refuse' => 'مقال مرفوض', |
|
| 356 | - 'info_article_supprime' => 'مقال محذوف', |
|
| 357 | - 'info_articles' => 'المقالات', |
|
| 358 | - 'info_articles_a_valider' => 'مقالات معروضة للتصديق', |
|
| 359 | - 'info_articles_nb' => '@nb@ مقال', |
|
| 360 | - 'info_articles_proposes' => 'المقالات المعروضة', |
|
| 361 | - 'info_articles_un' => 'مقال واحد', |
|
| 362 | - 'info_auteurs_nombre' => 'مؤلف (مؤلفون):', |
|
| 363 | - 'info_authentification_ftp' => 'التحقق ( عبر بروتوكول FTP ).', |
|
| 364 | - 'info_breves_2' => 'خبر', |
|
| 365 | - 'info_breves_nb' => '@nb@ خبر', |
|
| 366 | - 'info_breves_un' => 'خبر واحد', |
|
| 367 | - 'info_connexion_refusee' => 'رفض الاتصال', |
|
| 368 | - 'info_contact_developpeur' => 'الرجاء الاتصال بمطوّر.', |
|
| 369 | - 'info_contenance' => 'هذا الموقع يحتوي على:', |
|
| 370 | - 'info_contribution' => 'مشاركة منتديات', |
|
| 371 | - 'info_copyright' => '@spip@ برنامج حر موزع @lien_gpl@.', |
|
| 372 | - 'info_copyright_doc' => 'لمزيد من المعلومات راجع الموقع<a href="@spipnet@">@spipnet_affiche@</a>.', |
|
| 373 | - 'info_copyright_gpl' => 'بموجب الترخيص العام GPL', |
|
| 374 | - 'info_cours_edition' => 'قيد التحرير', |
|
| 375 | - 'info_creer_repertoire' => 'الرجاء إنشاء ملف أو دليل باسم', |
|
| 376 | - 'info_creer_repertoire_2' => 'داخل الدليل الفرعي <b>@repertoire@</b>، ثم:', |
|
| 377 | - 'info_creer_vignette' => 'إنشاء آلي للمصغر', |
|
| 378 | - 'info_creerdansrubrique_non_autorise' => 'لا تملك الحقوق الكافية لإنشاء اي محتوى في هذا القسم', |
|
| 379 | - 'info_deplier' => 'بسط', |
|
| 380 | - 'info_descriptif_nombre' => 'الوصف:', |
|
| 381 | - 'info_description' => 'الوصف:', |
|
| 382 | - 'info_description_2' => 'الوصف:', |
|
| 383 | - 'info_dimension' => 'الحجم:', |
|
| 384 | - 'info_documents_nb' => '@nb@ مستند', |
|
| 385 | - 'info_documents_un' => 'مستند واحد', |
|
| 386 | - 'info_ecire_message_prive' => 'تحرير رسالة خاصة', |
|
| 387 | - 'info_email_invalide' => 'عنوان بريد غير صالح.', |
|
| 388 | - 'info_en_cours_validation' => 'مقالاتك قيد التحرير', |
|
| 389 | - 'info_en_ligne' => 'متصل حالياً:', |
|
| 390 | - 'info_envoyer_message_prive' => 'ابعث برسالة خاصة لهذا المؤلف', |
|
| 391 | - 'info_erreur_requete' => 'خطأ في الاستفسار:', |
|
| 392 | - 'info_erreur_squelette2' => 'لا توجد صفحة نموذجية <b>@fichier@</b> متاحة...', |
|
| 393 | - 'info_erreur_systeme' => 'خطأ في النظام (خطأ رقم @errsys@)', |
|
| 394 | - 'info_erreur_systeme2' => 'قد يكون القرص الصلب ممتلئاً أو قد تكون قاعدة البيانات معطلة.<br /> |
|
| 296 | + // I |
|
| 297 | + 'ical_texte_rss_articles' => 'يوجد ملف «الترخيص الخلفي» لمقالات هذا الموقع على العنوان: ', |
|
| 298 | + 'ical_texte_rss_articles2' => 'يمكنك أيضاً الحصول على ملفات «الترخيص الخلفي» لمقالات كل قسم في الموقع:', |
|
| 299 | + 'ical_texte_rss_breves' => 'يوجد كذلك ملف يحتوي على أخبار الموقع. وبإدخال رقم قسم ما، تحصل على أخبار هذا القسم فقط.', |
|
| 300 | + 'icone_a_suivre' => 'للمتابعة', |
|
| 301 | + 'icone_admin_site' => 'إدارة الموقع', |
|
| 302 | + 'icone_agenda' => 'المفكرة', |
|
| 303 | + 'icone_aide_ligne' => 'التعليمات الفورية', |
|
| 304 | + 'icone_articles' => 'المقالات', |
|
| 305 | + 'icone_auteurs' => 'المؤلفون', |
|
| 306 | + 'icone_brouteur' => 'تصفح سريع', |
|
| 307 | + 'icone_configuration_site' => 'إعداد', |
|
| 308 | + 'icone_configurer_site' => 'إعداد موقعك', |
|
| 309 | + 'icone_creer_nouvel_auteur' => 'إضافة مؤلف جديد', |
|
| 310 | + 'icone_creer_rubrique' => 'إنشاء قسم', |
|
| 311 | + 'icone_creer_sous_rubrique' => 'إنشاء قسم فرعي', |
|
| 312 | + 'icone_deconnecter' => 'خروج', |
|
| 313 | + 'icone_discussions' => 'نقاشات', |
|
| 314 | + 'icone_doc_rubrique' => 'مستندات الأقسام', |
|
| 315 | + 'icone_ecrire_article' => 'كتابة مقال جديد', |
|
| 316 | + 'icone_edition_site' => 'تحرير الموقع', |
|
| 317 | + 'icone_gestion_langues' => 'إدارة اللغات', |
|
| 318 | + 'icone_informations_personnelles' => 'المعلومات الشخصية', |
|
| 319 | + 'icone_interface_complet' => 'واجهة كاملة', |
|
| 320 | + 'icone_interface_simple' => 'واجهة مبسّطة', |
|
| 321 | + 'icone_maintenance_site' => 'صيانة الموقع', |
|
| 322 | + 'icone_messagerie_personnelle' => 'المراسلة الشخصية', |
|
| 323 | + 'icone_repartition_debut' => 'إظهار التوزيع منذ البداية', |
|
| 324 | + 'icone_rubriques' => 'الأقسام', |
|
| 325 | + 'icone_sauver_site' => 'نسخة احتياطية للموقع', |
|
| 326 | + 'icone_site_entier' => 'الموقع بالكامل', |
|
| 327 | + 'icone_sites_references' => 'المواقع المبوبة', |
|
| 328 | + 'icone_statistiques' => 'إحصاءات الموقع', |
|
| 329 | + 'icone_suivi_activite' => 'متابعة نشاط الموقع', |
|
| 330 | + 'icone_suivi_actualite' => 'تطور الموقع', |
|
| 331 | + 'icone_suivi_pettions' => 'متابعة/إدارة العرائض', |
|
| 332 | + 'icone_suivi_revisions' => 'تعديل المقالات', |
|
| 333 | + 'icone_supprimer_document' => 'حذف هذا المستند', |
|
| 334 | + 'icone_supprimer_image' => 'حذف هذه الصورة', |
|
| 335 | + 'icone_tous_articles' => 'كل مقالاتك', |
|
| 336 | + 'icone_tous_auteur' => 'جميع المؤلفين', |
|
| 337 | + 'icone_tous_visiteur' => 'جميع الزوار', |
|
| 338 | + 'icone_visiter_site' => 'تصفح الموقع العمومي', |
|
| 339 | + 'icone_voir_en_ligne' => 'عرض مباشر', |
|
| 340 | + 'img_indisponible' => 'صورة غير متوفرة', |
|
| 341 | + 'impossible' => 'مستحيل', |
|
| 342 | + 'info_a_suivre' => 'للمتابعة»', |
|
| 343 | + 'info_acces_interdit' => 'الدخول محظور', |
|
| 344 | + 'info_acces_refuse' => 'دخول محظور', |
|
| 345 | + 'info_action' => 'عملية: @action@', |
|
| 346 | + 'info_administrer_rubriques' => 'يمكنك إدارة هذا القسم وأقسامه الفرعية', |
|
| 347 | + 'info_adresse_non_indiquee' => 'لم تدخل أي عنوان لاختباره!', |
|
| 348 | + 'info_aide' => 'تعليمات :', |
|
| 349 | + 'info_ajouter_mot' => 'إضافة هذا المفتاح', |
|
| 350 | + 'info_annonce' => 'إعلان', |
|
| 351 | + 'info_annonces_generales' => 'إعلانات عامة:', |
|
| 352 | + 'info_article_propose' => 'مقال مقترح', |
|
| 353 | + 'info_article_publie' => 'مقال منشور', |
|
| 354 | + 'info_article_redaction' => 'مقال قيد التحرير', |
|
| 355 | + 'info_article_refuse' => 'مقال مرفوض', |
|
| 356 | + 'info_article_supprime' => 'مقال محذوف', |
|
| 357 | + 'info_articles' => 'المقالات', |
|
| 358 | + 'info_articles_a_valider' => 'مقالات معروضة للتصديق', |
|
| 359 | + 'info_articles_nb' => '@nb@ مقال', |
|
| 360 | + 'info_articles_proposes' => 'المقالات المعروضة', |
|
| 361 | + 'info_articles_un' => 'مقال واحد', |
|
| 362 | + 'info_auteurs_nombre' => 'مؤلف (مؤلفون):', |
|
| 363 | + 'info_authentification_ftp' => 'التحقق ( عبر بروتوكول FTP ).', |
|
| 364 | + 'info_breves_2' => 'خبر', |
|
| 365 | + 'info_breves_nb' => '@nb@ خبر', |
|
| 366 | + 'info_breves_un' => 'خبر واحد', |
|
| 367 | + 'info_connexion_refusee' => 'رفض الاتصال', |
|
| 368 | + 'info_contact_developpeur' => 'الرجاء الاتصال بمطوّر.', |
|
| 369 | + 'info_contenance' => 'هذا الموقع يحتوي على:', |
|
| 370 | + 'info_contribution' => 'مشاركة منتديات', |
|
| 371 | + 'info_copyright' => '@spip@ برنامج حر موزع @lien_gpl@.', |
|
| 372 | + 'info_copyright_doc' => 'لمزيد من المعلومات راجع الموقع<a href="@spipnet@">@spipnet_affiche@</a>.', |
|
| 373 | + 'info_copyright_gpl' => 'بموجب الترخيص العام GPL', |
|
| 374 | + 'info_cours_edition' => 'قيد التحرير', |
|
| 375 | + 'info_creer_repertoire' => 'الرجاء إنشاء ملف أو دليل باسم', |
|
| 376 | + 'info_creer_repertoire_2' => 'داخل الدليل الفرعي <b>@repertoire@</b>، ثم:', |
|
| 377 | + 'info_creer_vignette' => 'إنشاء آلي للمصغر', |
|
| 378 | + 'info_creerdansrubrique_non_autorise' => 'لا تملك الحقوق الكافية لإنشاء اي محتوى في هذا القسم', |
|
| 379 | + 'info_deplier' => 'بسط', |
|
| 380 | + 'info_descriptif_nombre' => 'الوصف:', |
|
| 381 | + 'info_description' => 'الوصف:', |
|
| 382 | + 'info_description_2' => 'الوصف:', |
|
| 383 | + 'info_dimension' => 'الحجم:', |
|
| 384 | + 'info_documents_nb' => '@nb@ مستند', |
|
| 385 | + 'info_documents_un' => 'مستند واحد', |
|
| 386 | + 'info_ecire_message_prive' => 'تحرير رسالة خاصة', |
|
| 387 | + 'info_email_invalide' => 'عنوان بريد غير صالح.', |
|
| 388 | + 'info_en_cours_validation' => 'مقالاتك قيد التحرير', |
|
| 389 | + 'info_en_ligne' => 'متصل حالياً:', |
|
| 390 | + 'info_envoyer_message_prive' => 'ابعث برسالة خاصة لهذا المؤلف', |
|
| 391 | + 'info_erreur_requete' => 'خطأ في الاستفسار:', |
|
| 392 | + 'info_erreur_squelette2' => 'لا توجد صفحة نموذجية <b>@fichier@</b> متاحة...', |
|
| 393 | + 'info_erreur_systeme' => 'خطأ في النظام (خطأ رقم @errsys@)', |
|
| 394 | + 'info_erreur_systeme2' => 'قد يكون القرص الصلب ممتلئاً أو قد تكون قاعدة البيانات معطلة.<br /> |
|
| 395 | 395 | <span style="color:red;">حاول <a href=\'@script@\'>إصلاح القاعدة</a>، أو الاتصال بمضيف موقعك.</font> ', |
| 396 | - 'info_fini' => 'انتهى!', |
|
| 397 | - 'info_format_image' => 'تنسيق ملفات الصور الذي يمكن استخدامه لإنشاء المصغرات: @gd_formats@ .', |
|
| 398 | - 'info_format_non_defini' => 'تنسيق غير معروف', |
|
| 399 | - 'info_grand_ecran' => 'شاشة كبيرة', |
|
| 400 | - 'info_image_aide' => 'تعليمات', |
|
| 401 | - 'info_image_process_titre' => 'طريقة إنشاء المصغرات', |
|
| 402 | - 'info_impossible_lire_page' => '<b>خطأ!</b> لا يمكن قراءة الصفحة <tt><html>@test_proxy@</html></tt> عبر الجهاز الوكيل', |
|
| 403 | - 'info_installation_systeme_publication' => 'تثبيت نظام النشر...', |
|
| 404 | - 'info_installer_documents' => 'يمكنك تثبيت كل المستندات الموجودة في المجلد @upload@ آلياً.', |
|
| 405 | - 'info_installer_ftp' => 'بصفتك مديراً، يمكنك تثبيت (بواسطة بروتوكول FTP) ملفات في المجلد@upload@ من أجل تحديدهم في ما بعد مباشرة من هنا.', |
|
| 406 | - 'info_installer_images' => 'يمكنك تثبيت صور بتنسيقات JPEG وGIF وPNG.', |
|
| 407 | - 'info_installer_images_dossier' => 'تثبيت صور في المجلد @upload@ للتمكن من تحديدها هنا.', |
|
| 408 | - 'info_interface_complete' => 'واجهة كاملة', |
|
| 409 | - 'info_interface_simple' => 'واجهة مبسّطة', |
|
| 410 | - 'info_joindre_document_article' => 'يمكنك إرفاق مقالك بمستندات من الأنواع', |
|
| 411 | - 'info_joindre_document_rubrique' => 'يمكنك إضافة مستندات من الأنواع التالية إلى هذا القسم', |
|
| 412 | - 'info_joindre_documents_article' => 'يمكنك إرفاق مستندات من الأنواع التالية بمقالك :', |
|
| 413 | - 'info_l_article' => 'المقال', |
|
| 414 | - 'info_la_breve' => 'الخبر', |
|
| 415 | - 'info_la_rubrique' => 'القسم', |
|
| 416 | - 'info_langue_principale' => 'اللغة الأساسية للموقع', |
|
| 417 | - 'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ نقطة', |
|
| 418 | - 'info_les_auteurs_1' => 'من @les_auteurs@', |
|
| 419 | - 'info_logo_format_interdit' => 'الرموز بتنسيق @formats@ هي الوحيدة المسموح بها.', |
|
| 420 | - 'info_logo_max_poids' => 'يجب ألا يتعدى حجم الرموز @maxi@ (يبلغ حجم الملف الحالي @actuel@). ', |
|
| 421 | - 'info_mail_fournisseur' => '[email protected]', |
|
| 422 | - 'info_message_2' => 'رسالة', |
|
| 423 | - 'info_message_supprime' => 'تم حذف المشاركة', |
|
| 424 | - 'info_messages_nb' => '@nb@ رسالة', |
|
| 425 | - 'info_messages_un' => 'رسالة واحدة', |
|
| 426 | - 'info_mise_en_ligne' => 'تاريخ النشر:', |
|
| 427 | - 'info_modification_parametres_securite' => 'تعديل إعدادات الأمان', |
|
| 428 | - 'info_mois_courant' => 'في بحر الشهر:', |
|
| 429 | - 'info_mot_cle_ajoute' => 'تمت إضافة المفتاح التالي إلى', |
|
| 430 | - 'info_multi_herit' => 'اللغة الافتراضية', |
|
| 431 | - 'info_multi_langues_soulignees' => '<u>اللغات التي تحتها خط</u> تتمتع بترجمة كاملة او جزئية لكل نصوص الواجهة. فإذا حددت هذه اللغات، سيتم ترجمة العديد من عناصر الموقع العمومي (التواريخ والاستمارات) آلياً. أما بالنسبة للغات التي ليس تحتها خط، فستظهر هذه العناصر في لغة الموقع الأساسية.', |
|
| 432 | - 'info_multilinguisme' => 'تعدد اللغات', |
|
| 433 | - 'info_nom_non_utilisateurs_connectes' => 'اسمك لا يظهر في قائمة المستخدمين المتصلين.', |
|
| 434 | - 'info_nom_utilisateurs_connectes' => 'اسمك يظهر في قائمة المستخدمين المتصلين.', |
|
| 435 | - 'info_nombre_en_ligne' => 'متصل حالياً:', |
|
| 436 | - 'info_non_resultat' => 'لا توجد نتائج لـ "@cherche_mot@"', |
|
| 437 | - 'info_non_utilisation_messagerie' => 'أنت لا تستخدم المراسلة الداخلية في هذا الموقع.', |
|
| 438 | - 'info_nouveau_message' => 'وصلت رسالة جديدة', |
|
| 439 | - 'info_nouveaux_messages' => 'وصلت @total_messages@ رسالة جديدة', |
|
| 440 | - 'info_numero_abbreviation' => 'رقم', |
|
| 441 | - 'info_obligatoire' => 'هذه المعلومة إجبارية', |
|
| 442 | - 'info_page_actuelle' => 'الصفحة الحالية', |
|
| 443 | - 'info_pense_bete' => 'مذكرة', |
|
| 444 | - 'info_petit_ecran' => 'شاشة صغيرة', |
|
| 445 | - 'info_petition_close' => 'عريضة مقفلة', |
|
| 446 | - 'info_pixels' => 'نقطة', |
|
| 447 | - 'info_plusieurs_mots_trouves' => 'تم العثور على عدة مفاتيح لـ "@cherche_mot@" :', |
|
| 448 | - 'info_portfolio_automatique' => 'محفظة آلية:', |
|
| 449 | - 'info_premier_resultat' => '[النتائج الـ@debut_limit@ الأولى من أصل @total@]', |
|
| 450 | - 'info_premier_resultat_sur' => '[النتائج الـ@debut_limit@ الأولى من أصل @total@]', |
|
| 451 | - 'info_propose_1' => '[@nom_site_spip@] يقترح: @titre@', |
|
| 452 | - 'info_propose_2' => 'مقال معروض |
|
| 396 | + 'info_fini' => 'انتهى!', |
|
| 397 | + 'info_format_image' => 'تنسيق ملفات الصور الذي يمكن استخدامه لإنشاء المصغرات: @gd_formats@ .', |
|
| 398 | + 'info_format_non_defini' => 'تنسيق غير معروف', |
|
| 399 | + 'info_grand_ecran' => 'شاشة كبيرة', |
|
| 400 | + 'info_image_aide' => 'تعليمات', |
|
| 401 | + 'info_image_process_titre' => 'طريقة إنشاء المصغرات', |
|
| 402 | + 'info_impossible_lire_page' => '<b>خطأ!</b> لا يمكن قراءة الصفحة <tt><html>@test_proxy@</html></tt> عبر الجهاز الوكيل', |
|
| 403 | + 'info_installation_systeme_publication' => 'تثبيت نظام النشر...', |
|
| 404 | + 'info_installer_documents' => 'يمكنك تثبيت كل المستندات الموجودة في المجلد @upload@ آلياً.', |
|
| 405 | + 'info_installer_ftp' => 'بصفتك مديراً، يمكنك تثبيت (بواسطة بروتوكول FTP) ملفات في المجلد@upload@ من أجل تحديدهم في ما بعد مباشرة من هنا.', |
|
| 406 | + 'info_installer_images' => 'يمكنك تثبيت صور بتنسيقات JPEG وGIF وPNG.', |
|
| 407 | + 'info_installer_images_dossier' => 'تثبيت صور في المجلد @upload@ للتمكن من تحديدها هنا.', |
|
| 408 | + 'info_interface_complete' => 'واجهة كاملة', |
|
| 409 | + 'info_interface_simple' => 'واجهة مبسّطة', |
|
| 410 | + 'info_joindre_document_article' => 'يمكنك إرفاق مقالك بمستندات من الأنواع', |
|
| 411 | + 'info_joindre_document_rubrique' => 'يمكنك إضافة مستندات من الأنواع التالية إلى هذا القسم', |
|
| 412 | + 'info_joindre_documents_article' => 'يمكنك إرفاق مستندات من الأنواع التالية بمقالك :', |
|
| 413 | + 'info_l_article' => 'المقال', |
|
| 414 | + 'info_la_breve' => 'الخبر', |
|
| 415 | + 'info_la_rubrique' => 'القسم', |
|
| 416 | + 'info_langue_principale' => 'اللغة الأساسية للموقع', |
|
| 417 | + 'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ نقطة', |
|
| 418 | + 'info_les_auteurs_1' => 'من @les_auteurs@', |
|
| 419 | + 'info_logo_format_interdit' => 'الرموز بتنسيق @formats@ هي الوحيدة المسموح بها.', |
|
| 420 | + 'info_logo_max_poids' => 'يجب ألا يتعدى حجم الرموز @maxi@ (يبلغ حجم الملف الحالي @actuel@). ', |
|
| 421 | + 'info_mail_fournisseur' => '[email protected]', |
|
| 422 | + 'info_message_2' => 'رسالة', |
|
| 423 | + 'info_message_supprime' => 'تم حذف المشاركة', |
|
| 424 | + 'info_messages_nb' => '@nb@ رسالة', |
|
| 425 | + 'info_messages_un' => 'رسالة واحدة', |
|
| 426 | + 'info_mise_en_ligne' => 'تاريخ النشر:', |
|
| 427 | + 'info_modification_parametres_securite' => 'تعديل إعدادات الأمان', |
|
| 428 | + 'info_mois_courant' => 'في بحر الشهر:', |
|
| 429 | + 'info_mot_cle_ajoute' => 'تمت إضافة المفتاح التالي إلى', |
|
| 430 | + 'info_multi_herit' => 'اللغة الافتراضية', |
|
| 431 | + 'info_multi_langues_soulignees' => '<u>اللغات التي تحتها خط</u> تتمتع بترجمة كاملة او جزئية لكل نصوص الواجهة. فإذا حددت هذه اللغات، سيتم ترجمة العديد من عناصر الموقع العمومي (التواريخ والاستمارات) آلياً. أما بالنسبة للغات التي ليس تحتها خط، فستظهر هذه العناصر في لغة الموقع الأساسية.', |
|
| 432 | + 'info_multilinguisme' => 'تعدد اللغات', |
|
| 433 | + 'info_nom_non_utilisateurs_connectes' => 'اسمك لا يظهر في قائمة المستخدمين المتصلين.', |
|
| 434 | + 'info_nom_utilisateurs_connectes' => 'اسمك يظهر في قائمة المستخدمين المتصلين.', |
|
| 435 | + 'info_nombre_en_ligne' => 'متصل حالياً:', |
|
| 436 | + 'info_non_resultat' => 'لا توجد نتائج لـ "@cherche_mot@"', |
|
| 437 | + 'info_non_utilisation_messagerie' => 'أنت لا تستخدم المراسلة الداخلية في هذا الموقع.', |
|
| 438 | + 'info_nouveau_message' => 'وصلت رسالة جديدة', |
|
| 439 | + 'info_nouveaux_messages' => 'وصلت @total_messages@ رسالة جديدة', |
|
| 440 | + 'info_numero_abbreviation' => 'رقم', |
|
| 441 | + 'info_obligatoire' => 'هذه المعلومة إجبارية', |
|
| 442 | + 'info_page_actuelle' => 'الصفحة الحالية', |
|
| 443 | + 'info_pense_bete' => 'مذكرة', |
|
| 444 | + 'info_petit_ecran' => 'شاشة صغيرة', |
|
| 445 | + 'info_petition_close' => 'عريضة مقفلة', |
|
| 446 | + 'info_pixels' => 'نقطة', |
|
| 447 | + 'info_plusieurs_mots_trouves' => 'تم العثور على عدة مفاتيح لـ "@cherche_mot@" :', |
|
| 448 | + 'info_portfolio_automatique' => 'محفظة آلية:', |
|
| 449 | + 'info_premier_resultat' => '[النتائج الـ@debut_limit@ الأولى من أصل @total@]', |
|
| 450 | + 'info_premier_resultat_sur' => '[النتائج الـ@debut_limit@ الأولى من أصل @total@]', |
|
| 451 | + 'info_propose_1' => '[@nom_site_spip@] يقترح: @titre@', |
|
| 452 | + 'info_propose_2' => 'مقال معروض |
|
| 453 | 453 | ----------', |
| 454 | - 'info_propose_3' => 'المقال "@titre@" معروض للنشر.', |
|
| 455 | - 'info_propose_4' => 'أنت مدعو لمراجعته وإبداء رأيك', |
|
| 456 | - 'info_propose_5' => 'في المنتدى المرتبط به. إنه موجود على العنوان:', |
|
| 457 | - 'info_publie_01' => 'تم التصديق على المقال "@titre@" من قبل @connect_nom@ .', |
|
| 458 | - 'info_publie_1' => '[@nom_site_spip@] ينشر: @titre@', |
|
| 459 | - 'info_publie_2' => 'مقال منشور |
|
| 454 | + 'info_propose_3' => 'المقال "@titre@" معروض للنشر.', |
|
| 455 | + 'info_propose_4' => 'أنت مدعو لمراجعته وإبداء رأيك', |
|
| 456 | + 'info_propose_5' => 'في المنتدى المرتبط به. إنه موجود على العنوان:', |
|
| 457 | + 'info_publie_01' => 'تم التصديق على المقال "@titre@" من قبل @connect_nom@ .', |
|
| 458 | + 'info_publie_1' => '[@nom_site_spip@] ينشر: @titre@', |
|
| 459 | + 'info_publie_2' => 'مقال منشور |
|
| 460 | 460 | ----------', |
| 461 | - 'info_rechercher' => 'بحث', |
|
| 462 | - 'info_rechercher_02' => 'بحث:', |
|
| 463 | - 'info_remplacer_vignette' => 'استبدال المصغر الافتراضي برمز شخصي:', |
|
| 464 | - 'info_rubriques_nb' => '@nb@ قسم', |
|
| 465 | - 'info_rubriques_un' => 'قسم واحد', |
|
| 466 | - 'info_sans_titre_2' => 'بدون عنوان', |
|
| 467 | - 'info_selectionner_fichier' => 'يمكنك تحديد ملف من المجلد @upload@:', |
|
| 468 | - 'info_selectionner_fichier_2' => 'تحديد ملف:', |
|
| 469 | - 'info_sites_nb' => '@nb@ موقع', |
|
| 470 | - 'info_sites_un' => 'موقع واحد', |
|
| 471 | - 'info_supprimer_vignette' => 'حذف المصغر', |
|
| 472 | - 'info_symbole_bleu' => 'الرمز <b>أزرق</b> يرمز إلى <b>مذكرة</b>: أي رسالة لاستخدامك الشخصي.', |
|
| 473 | - 'info_symbole_jaune' => 'الرمز <b>أصفر</b> يرمز إلى <b>إعلان لجميع المحررين</b>: يمكن لجميع المدراء تحريره وهو ظاهر لجميع المحررين.', |
|
| 474 | - 'info_symbole_vert' => 'الرمز <b>أخضر</b> يرمز إلى <b>الرسائل المتبادلة بين مستخدمي</b> الموقع.', |
|
| 475 | - 'info_telecharger_nouveau_logo' => 'تحميل رمز جديد:', |
|
| 476 | - 'info_telecharger_ordinateur' => 'تحميل من جهازك:', |
|
| 477 | - 'info_tous_resultats_enregistres' => '[تم تسجيل كل النتائج]', |
|
| 478 | - 'info_tout_afficher' => 'إظهار الكل', |
|
| 479 | - 'info_travaux_texte' => 'هذا الموقع قيد الإعداد. برجاء العودة في وقت لاحق...', |
|
| 480 | - 'info_travaux_titre' => 'موقع قيد التصميم', |
|
| 481 | - 'info_trop_resultat' => 'تم العثور على عدد كبير جداً من النتائج لـ "@cherche_mot@" ، الرجاء زيادة دقة البحث.', |
|
| 482 | - 'info_utilisation_messagerie_interne' => 'أنت تستخدم المراسلة الداخلية في هذا الموقع.', |
|
| 483 | - 'info_valider_lien' => 'التصديق على هذه الوصلة', |
|
| 484 | - 'info_verifier_image' => '، الرجاء التأكد من أنه تم نقل الصور بشكل سليم.', |
|
| 485 | - 'info_vignette_defaut' => 'المصغر الافتراضي', |
|
| 486 | - 'info_vignette_personnalisee' => 'مصغر شخصي', |
|
| 487 | - 'info_visite' => 'زيارة:', |
|
| 488 | - 'info_vos_rendez_vous' => 'مواعيدك القادمة', |
|
| 489 | - 'infos_vos_pense_bete' => 'مذكراتك', |
|
| 461 | + 'info_rechercher' => 'بحث', |
|
| 462 | + 'info_rechercher_02' => 'بحث:', |
|
| 463 | + 'info_remplacer_vignette' => 'استبدال المصغر الافتراضي برمز شخصي:', |
|
| 464 | + 'info_rubriques_nb' => '@nb@ قسم', |
|
| 465 | + 'info_rubriques_un' => 'قسم واحد', |
|
| 466 | + 'info_sans_titre_2' => 'بدون عنوان', |
|
| 467 | + 'info_selectionner_fichier' => 'يمكنك تحديد ملف من المجلد @upload@:', |
|
| 468 | + 'info_selectionner_fichier_2' => 'تحديد ملف:', |
|
| 469 | + 'info_sites_nb' => '@nb@ موقع', |
|
| 470 | + 'info_sites_un' => 'موقع واحد', |
|
| 471 | + 'info_supprimer_vignette' => 'حذف المصغر', |
|
| 472 | + 'info_symbole_bleu' => 'الرمز <b>أزرق</b> يرمز إلى <b>مذكرة</b>: أي رسالة لاستخدامك الشخصي.', |
|
| 473 | + 'info_symbole_jaune' => 'الرمز <b>أصفر</b> يرمز إلى <b>إعلان لجميع المحررين</b>: يمكن لجميع المدراء تحريره وهو ظاهر لجميع المحررين.', |
|
| 474 | + 'info_symbole_vert' => 'الرمز <b>أخضر</b> يرمز إلى <b>الرسائل المتبادلة بين مستخدمي</b> الموقع.', |
|
| 475 | + 'info_telecharger_nouveau_logo' => 'تحميل رمز جديد:', |
|
| 476 | + 'info_telecharger_ordinateur' => 'تحميل من جهازك:', |
|
| 477 | + 'info_tous_resultats_enregistres' => '[تم تسجيل كل النتائج]', |
|
| 478 | + 'info_tout_afficher' => 'إظهار الكل', |
|
| 479 | + 'info_travaux_texte' => 'هذا الموقع قيد الإعداد. برجاء العودة في وقت لاحق...', |
|
| 480 | + 'info_travaux_titre' => 'موقع قيد التصميم', |
|
| 481 | + 'info_trop_resultat' => 'تم العثور على عدد كبير جداً من النتائج لـ "@cherche_mot@" ، الرجاء زيادة دقة البحث.', |
|
| 482 | + 'info_utilisation_messagerie_interne' => 'أنت تستخدم المراسلة الداخلية في هذا الموقع.', |
|
| 483 | + 'info_valider_lien' => 'التصديق على هذه الوصلة', |
|
| 484 | + 'info_verifier_image' => '، الرجاء التأكد من أنه تم نقل الصور بشكل سليم.', |
|
| 485 | + 'info_vignette_defaut' => 'المصغر الافتراضي', |
|
| 486 | + 'info_vignette_personnalisee' => 'مصغر شخصي', |
|
| 487 | + 'info_visite' => 'زيارة:', |
|
| 488 | + 'info_vos_rendez_vous' => 'مواعيدك القادمة', |
|
| 489 | + 'infos_vos_pense_bete' => 'مذكراتك', |
|
| 490 | 490 | |
| 491 | - // L |
|
| 492 | - 'label_ajout_id_rapide' => 'إضافة سريعة', |
|
| 493 | - 'label_poids_fichier' => 'الحجم', |
|
| 494 | - 'label_ponctuer' => '@label@ :', |
|
| 495 | - 'lien_afficher_icones_seuls' => 'عرض الرموز فقط', |
|
| 496 | - 'lien_afficher_texte_icones' => 'عرض الرموز والعناوين', |
|
| 497 | - 'lien_afficher_texte_seul' => 'عرض العناوين فقط', |
|
| 498 | - 'lien_aller_a_la_derniere_page' => 'الذهاب الى الصفحة الأخيرة', |
|
| 499 | - 'lien_aller_a_la_page_nb' => 'الذهاب الى الصفحة @nb@', |
|
| 500 | - 'lien_aller_a_la_page_precedente' => 'الذهاب الى الصفحة الالسابقة', |
|
| 501 | - 'lien_aller_a_la_page_suivante' => 'الذهاب الى الصفحة التالية', |
|
| 502 | - 'lien_aller_a_la_premiere_page' => 'الذهاب الى الصفحة الأولى', |
|
| 503 | - 'lien_liberer' => 'فك الحجز', |
|
| 504 | - 'lien_liberer_tous' => 'فك حجز الكل', |
|
| 505 | - 'lien_nouvea_pense_bete' => 'مذكرة جديدة', |
|
| 506 | - 'lien_nouveau_message' => 'رسالة جديدة', |
|
| 507 | - 'lien_nouvelle_annonce' => 'إعلان جديد', |
|
| 508 | - 'lien_petitions' => 'عريضة', |
|
| 509 | - 'lien_popularite' => 'شعبية: @popularite@%', |
|
| 510 | - 'lien_racine_site' => 'أصل الموقع', |
|
| 511 | - 'lien_reessayer' => 'إعادة المحاولة', |
|
| 512 | - 'lien_repondre_message' => 'الرد على هذه المشاركة', |
|
| 513 | - 'lien_supprimer' => 'حذف', |
|
| 514 | - 'lien_tout_afficher' => 'إظهار الكل', |
|
| 515 | - 'lien_visite_site' => 'زيارة هذا الموقع', |
|
| 516 | - 'lien_visites' => '@visites@ زيارة', |
|
| 517 | - 'lien_voir_auteur' => 'مراجعة هذا المؤلف', |
|
| 518 | - 'ligne' => 'سطر', |
|
| 519 | - 'login' => 'الدخول', |
|
| 520 | - 'login_acces_prive' => 'الدخول إلى المجال الخاص', |
|
| 521 | - 'login_autre_identifiant' => 'الاتصال بمعرّف آخر', |
|
| 522 | - 'login_cookie_accepte' => 'الرجاء تهيئ برنامج التصفح ليتقبلها (من هذا الموقع على الأقل)', |
|
| 523 | - 'login_cookie_oblige' => 'للتعريف عن نفسك بشكل آمن في هذا الموقع، يجب قبول الكعكات (cookies).', |
|
| 524 | - 'login_deconnexion_ok' => 'تم قطع الاتصال.', |
|
| 525 | - 'login_erreur_pass' => 'خطأ في كلمة السر.', |
|
| 526 | - 'login_espace_prive' => 'المجال الخاص', |
|
| 527 | - 'login_identifiant_inconnu' => 'المعرّف «@login@» غير معروف.', |
|
| 528 | - 'login_login' => 'المعرّف:', |
|
| 529 | - 'login_login2' => 'المعرّف او عنوان البريد الالكتروني:', |
|
| 530 | - 'login_login_pass_incorrect' => '(خطأ في المعرّف أو كلمة السر).', |
|
| 531 | - 'login_motpasseoublie' => 'هل نسيت كلمة السر؟', |
|
| 532 | - 'login_non_securise' => 'لطفا، هذه الاستمارة غير آمنة. |
|
| 491 | + // L |
|
| 492 | + 'label_ajout_id_rapide' => 'إضافة سريعة', |
|
| 493 | + 'label_poids_fichier' => 'الحجم', |
|
| 494 | + 'label_ponctuer' => '@label@ :', |
|
| 495 | + 'lien_afficher_icones_seuls' => 'عرض الرموز فقط', |
|
| 496 | + 'lien_afficher_texte_icones' => 'عرض الرموز والعناوين', |
|
| 497 | + 'lien_afficher_texte_seul' => 'عرض العناوين فقط', |
|
| 498 | + 'lien_aller_a_la_derniere_page' => 'الذهاب الى الصفحة الأخيرة', |
|
| 499 | + 'lien_aller_a_la_page_nb' => 'الذهاب الى الصفحة @nb@', |
|
| 500 | + 'lien_aller_a_la_page_precedente' => 'الذهاب الى الصفحة الالسابقة', |
|
| 501 | + 'lien_aller_a_la_page_suivante' => 'الذهاب الى الصفحة التالية', |
|
| 502 | + 'lien_aller_a_la_premiere_page' => 'الذهاب الى الصفحة الأولى', |
|
| 503 | + 'lien_liberer' => 'فك الحجز', |
|
| 504 | + 'lien_liberer_tous' => 'فك حجز الكل', |
|
| 505 | + 'lien_nouvea_pense_bete' => 'مذكرة جديدة', |
|
| 506 | + 'lien_nouveau_message' => 'رسالة جديدة', |
|
| 507 | + 'lien_nouvelle_annonce' => 'إعلان جديد', |
|
| 508 | + 'lien_petitions' => 'عريضة', |
|
| 509 | + 'lien_popularite' => 'شعبية: @popularite@%', |
|
| 510 | + 'lien_racine_site' => 'أصل الموقع', |
|
| 511 | + 'lien_reessayer' => 'إعادة المحاولة', |
|
| 512 | + 'lien_repondre_message' => 'الرد على هذه المشاركة', |
|
| 513 | + 'lien_supprimer' => 'حذف', |
|
| 514 | + 'lien_tout_afficher' => 'إظهار الكل', |
|
| 515 | + 'lien_visite_site' => 'زيارة هذا الموقع', |
|
| 516 | + 'lien_visites' => '@visites@ زيارة', |
|
| 517 | + 'lien_voir_auteur' => 'مراجعة هذا المؤلف', |
|
| 518 | + 'ligne' => 'سطر', |
|
| 519 | + 'login' => 'الدخول', |
|
| 520 | + 'login_acces_prive' => 'الدخول إلى المجال الخاص', |
|
| 521 | + 'login_autre_identifiant' => 'الاتصال بمعرّف آخر', |
|
| 522 | + 'login_cookie_accepte' => 'الرجاء تهيئ برنامج التصفح ليتقبلها (من هذا الموقع على الأقل)', |
|
| 523 | + 'login_cookie_oblige' => 'للتعريف عن نفسك بشكل آمن في هذا الموقع، يجب قبول الكعكات (cookies).', |
|
| 524 | + 'login_deconnexion_ok' => 'تم قطع الاتصال.', |
|
| 525 | + 'login_erreur_pass' => 'خطأ في كلمة السر.', |
|
| 526 | + 'login_espace_prive' => 'المجال الخاص', |
|
| 527 | + 'login_identifiant_inconnu' => 'المعرّف «@login@» غير معروف.', |
|
| 528 | + 'login_login' => 'المعرّف:', |
|
| 529 | + 'login_login2' => 'المعرّف او عنوان البريد الالكتروني:', |
|
| 530 | + 'login_login_pass_incorrect' => '(خطأ في المعرّف أو كلمة السر).', |
|
| 531 | + 'login_motpasseoublie' => 'هل نسيت كلمة السر؟', |
|
| 532 | + 'login_non_securise' => 'لطفا، هذه الاستمارة غير آمنة. |
|
| 533 | 533 | إذا كنت ترغب أن تكون كلمة سرك |
| 534 | 534 | آمنة على الشبكة، يجب تفعيل جافاسكريبت |
| 535 | 535 | في برنامج التصفح', |
| 536 | - 'login_nouvelle_tentative' => 'محاولة جديدة', |
|
| 537 | - 'login_par_ici' => 'أنت مسجّل... توجه من هنا...', |
|
| 538 | - 'login_pass2' => 'كلمة السر:', |
|
| 539 | - 'login_preferez_refuser' => '<b>إذا كنت تفضل عدم قبول الكعكات</b>، يمكنك استخدام طريقة دخول أخرى (أقل أماناً):', |
|
| 540 | - 'login_recharger' => 'وإعادة تحميل الصفحة', |
|
| 541 | - 'login_rester_identifie' => 'تذكروني', |
|
| 542 | - 'login_retour_public' => 'عودة إلى الموقع العام', |
|
| 543 | - 'login_retour_site' => 'عودة إلى الموقع العام', |
|
| 544 | - 'login_retoursitepublic' => 'عودة إلى الموقع العام', |
|
| 545 | - 'login_sans_cookie' => 'تعريف بدون الكعكة', |
|
| 546 | - 'login_securise' => 'تعريف مؤمّن', |
|
| 547 | - 'login_sinscrire' => 'تسجيل', |
|
| 548 | - 'login_test_navigateur' => 'تجربة المتصفح/إعادة الاتصال', |
|
| 549 | - 'login_verifiez_navigateur' => '(على أي حال، تأكد من أن المتصفح لم يقم بحفظ كلمة سرك...)', |
|
| 536 | + 'login_nouvelle_tentative' => 'محاولة جديدة', |
|
| 537 | + 'login_par_ici' => 'أنت مسجّل... توجه من هنا...', |
|
| 538 | + 'login_pass2' => 'كلمة السر:', |
|
| 539 | + 'login_preferez_refuser' => '<b>إذا كنت تفضل عدم قبول الكعكات</b>، يمكنك استخدام طريقة دخول أخرى (أقل أماناً):', |
|
| 540 | + 'login_recharger' => 'وإعادة تحميل الصفحة', |
|
| 541 | + 'login_rester_identifie' => 'تذكروني', |
|
| 542 | + 'login_retour_public' => 'عودة إلى الموقع العام', |
|
| 543 | + 'login_retour_site' => 'عودة إلى الموقع العام', |
|
| 544 | + 'login_retoursitepublic' => 'عودة إلى الموقع العام', |
|
| 545 | + 'login_sans_cookie' => 'تعريف بدون الكعكة', |
|
| 546 | + 'login_securise' => 'تعريف مؤمّن', |
|
| 547 | + 'login_sinscrire' => 'تسجيل', |
|
| 548 | + 'login_test_navigateur' => 'تجربة المتصفح/إعادة الاتصال', |
|
| 549 | + 'login_verifiez_navigateur' => '(على أي حال، تأكد من أن المتصفح لم يقم بحفظ كلمة سرك...)', |
|
| 550 | 550 | |
| 551 | - // M |
|
| 552 | - 'masquer_colonne' => 'حجب هذا العمود', |
|
| 553 | - 'masquer_trad' => 'حجب الترجمات', |
|
| 554 | - 'message_nouveaux_identifiants_echec' => 'لا يمكن إنشاء معرف وكلمة سر جديدين.', |
|
| 555 | - 'message_nouveaux_identifiants_echec_envoi' => 'مشكلة في إرسال المعرف وكلمة السر الجديدين.', |
|
| 556 | - 'message_nouveaux_identifiants_ok' => 'تم إرسال المعرف وكلمة السر الجديدين الى @email@.', |
|
| 557 | - 'module_fichiers_langues' => 'ملفات اللغة', |
|
| 551 | + // M |
|
| 552 | + 'masquer_colonne' => 'حجب هذا العمود', |
|
| 553 | + 'masquer_trad' => 'حجب الترجمات', |
|
| 554 | + 'message_nouveaux_identifiants_echec' => 'لا يمكن إنشاء معرف وكلمة سر جديدين.', |
|
| 555 | + 'message_nouveaux_identifiants_echec_envoi' => 'مشكلة في إرسال المعرف وكلمة السر الجديدين.', |
|
| 556 | + 'message_nouveaux_identifiants_ok' => 'تم إرسال المعرف وكلمة السر الجديدين الى @email@.', |
|
| 557 | + 'module_fichiers_langues' => 'ملفات اللغة', |
|
| 558 | 558 | |
| 559 | - // N |
|
| 560 | - 'navigateur_pas_redirige' => 'إذا لم تتم إعادة توجيه متصفحك، انقر هنا للمتابعة.', |
|
| 561 | - 'numero' => 'رقم', |
|
| 559 | + // N |
|
| 560 | + 'navigateur_pas_redirige' => 'إذا لم تتم إعادة توجيه متصفحك، انقر هنا للمتابعة.', |
|
| 561 | + 'numero' => 'رقم', |
|
| 562 | 562 | |
| 563 | - // O |
|
| 564 | - 'occurence' => 'ظهور', |
|
| 565 | - 'onglet_affacer_base' => 'حذف قاعدة البيانات', |
|
| 566 | - 'onglet_auteur' => 'المؤلف', |
|
| 567 | - 'onglet_contenu_site' => 'محتوى الموقع', |
|
| 568 | - 'onglet_evolution_visite_mod' => 'تطور', |
|
| 569 | - 'onglet_fonctions_avances' => 'الوظائف المتطورة', |
|
| 570 | - 'onglet_informations_personnelles' => 'المعلومات الشخصية', |
|
| 571 | - 'onglet_interactivite' => 'التفاعلية', |
|
| 572 | - 'onglet_messagerie' => 'المراسلة', |
|
| 573 | - 'onglet_repartition_rubrique' => 'التوزيع حسب الأقسام', |
|
| 574 | - 'onglet_save_restaur_base' => 'نسخ احتياطي / استرجاع القاعدة', |
|
| 575 | - 'onglet_vider_cache' => 'تفريغ الذاكرة المخبأة', |
|
| 563 | + // O |
|
| 564 | + 'occurence' => 'ظهور', |
|
| 565 | + 'onglet_affacer_base' => 'حذف قاعدة البيانات', |
|
| 566 | + 'onglet_auteur' => 'المؤلف', |
|
| 567 | + 'onglet_contenu_site' => 'محتوى الموقع', |
|
| 568 | + 'onglet_evolution_visite_mod' => 'تطور', |
|
| 569 | + 'onglet_fonctions_avances' => 'الوظائف المتطورة', |
|
| 570 | + 'onglet_informations_personnelles' => 'المعلومات الشخصية', |
|
| 571 | + 'onglet_interactivite' => 'التفاعلية', |
|
| 572 | + 'onglet_messagerie' => 'المراسلة', |
|
| 573 | + 'onglet_repartition_rubrique' => 'التوزيع حسب الأقسام', |
|
| 574 | + 'onglet_save_restaur_base' => 'نسخ احتياطي / استرجاع القاعدة', |
|
| 575 | + 'onglet_vider_cache' => 'تفريغ الذاكرة المخبأة', |
|
| 576 | 576 | |
| 577 | - // P |
|
| 578 | - 'pass_choix_pass' => 'الرجاء اختيار كلمة السر الجديدة:', |
|
| 579 | - 'pass_erreur' => 'خطأ', |
|
| 580 | - 'pass_erreur_acces_refuse' => '<b>خطأ:< b> لم تعد تملك حق الدخول إلى هذا الموقع.', |
|
| 581 | - 'pass_erreur_code_inconnu' => '<b>خطأ:< b> هذا المعرّف لا يتناسب مع أي من الزوار الذين يتمتعون بحق الدخول إلى هذا الموقع.', |
|
| 582 | - 'pass_erreur_non_enregistre' => '<b>خطأ:< b> العنوان <tt>@email_oubli@</tt> ليس مسجلاً في هذا الموقع.', |
|
| 583 | - 'pass_erreur_non_valide' => '<b>خطأ:< b> العنوان <tt>@email_oubli@</tt> ليس صالحاً.', |
|
| 584 | - 'pass_erreur_probleme_technique' => '<b>خطأ:< b> لم يتم بعث هذه الرسالة بسبب مشكلة تقنية.', |
|
| 585 | - 'pass_espace_prive_bla' => 'المجال الخاص لهذا الموقع مفتوح |
|
| 577 | + // P |
|
| 578 | + 'pass_choix_pass' => 'الرجاء اختيار كلمة السر الجديدة:', |
|
| 579 | + 'pass_erreur' => 'خطأ', |
|
| 580 | + 'pass_erreur_acces_refuse' => '<b>خطأ:< b> لم تعد تملك حق الدخول إلى هذا الموقع.', |
|
| 581 | + 'pass_erreur_code_inconnu' => '<b>خطأ:< b> هذا المعرّف لا يتناسب مع أي من الزوار الذين يتمتعون بحق الدخول إلى هذا الموقع.', |
|
| 582 | + 'pass_erreur_non_enregistre' => '<b>خطأ:< b> العنوان <tt>@email_oubli@</tt> ليس مسجلاً في هذا الموقع.', |
|
| 583 | + 'pass_erreur_non_valide' => '<b>خطأ:< b> العنوان <tt>@email_oubli@</tt> ليس صالحاً.', |
|
| 584 | + 'pass_erreur_probleme_technique' => '<b>خطأ:< b> لم يتم بعث هذه الرسالة بسبب مشكلة تقنية.', |
|
| 585 | + 'pass_espace_prive_bla' => 'المجال الخاص لهذا الموقع مفتوح |
|
| 586 | 586 | للزوار بعد تسجيلهم. بعد تسجيلك |
| 587 | 587 | يمكنك مراجعة المقالات قيد التحرير |
| 588 | 588 | واقتراح مقالات والمشاركة في كل المنتديات.', |
| 589 | - 'pass_forum_bla' => 'طلبت المشاركة في منتدى |
|
| 589 | + 'pass_forum_bla' => 'طلبت المشاركة في منتدى |
|
| 590 | 590 | محصور بالزوار المسجلين.', |
| 591 | - 'pass_indiquez_cidessous' => 'قم بإدخال العنوان الإلكتروني الذي |
|
| 591 | + 'pass_indiquez_cidessous' => 'قم بإدخال العنوان الإلكتروني الذي |
|
| 592 | 592 | تسجلت بواستطه سابقاً. |
| 593 | 593 | ستحصل على رسالة تفسر لك كيفية |
| 594 | 594 | استعادة دخولك.', |
| 595 | - 'pass_mail_passcookie' => '(هذه رسالة آلية) |
|
| 595 | + 'pass_mail_passcookie' => '(هذه رسالة آلية) |
|
| 596 | 596 | لاستعادة دخولك إلى الموقع |
| 597 | 597 | @nom_site_spip@ (@adresse_site@) |
| 598 | 598 | |
@@ -604,150 +604,150 @@ discard block |
||
| 604 | 604 | وإعادة الاتصال بالموقع. |
| 605 | 605 | |
| 606 | 606 | ', |
| 607 | - 'pass_mot_oublie' => 'نسيان كلمة السر', |
|
| 608 | - 'pass_nouveau_enregistre' => 'تم تسجيل كلمة سرك الجديدة.', |
|
| 609 | - 'pass_nouveau_pass' => 'كلمة السر الجديدة', |
|
| 610 | - 'pass_ok' => 'موافق', |
|
| 611 | - 'pass_oubli_mot' => 'نسيان كلمة السر', |
|
| 612 | - 'pass_procedure_changer' => 'من أجل تغيير كلمة السر، قم بأدخال عنوان البريد الالكتروني المرتبط بحسابك.', |
|
| 613 | - 'pass_quitter_fenetre' => 'إقفال هذه النافذة', |
|
| 614 | - 'pass_rappel_login' => 'تذكير: معرّفك هو «@login@».', |
|
| 615 | - 'pass_recevoir_mail' => 'تم ارسال رابط لإعادة تأصيل كلمة السر الى عنوان البريد لديك (اذا كان صالحاً).', |
|
| 616 | - 'pass_retour_public' => 'عودة إلى الموقع العام', |
|
| 617 | - 'pass_rien_a_faire_ici' => 'لا شغل لك هنا.', |
|
| 618 | - 'pass_vousinscrire' => 'تسجيلك في الموقع', |
|
| 619 | - 'precedent' => 'السابق', |
|
| 620 | - 'previsualisation' => 'عرض مسبق', |
|
| 621 | - 'previsualiser' => 'عرض مسبق', |
|
| 607 | + 'pass_mot_oublie' => 'نسيان كلمة السر', |
|
| 608 | + 'pass_nouveau_enregistre' => 'تم تسجيل كلمة سرك الجديدة.', |
|
| 609 | + 'pass_nouveau_pass' => 'كلمة السر الجديدة', |
|
| 610 | + 'pass_ok' => 'موافق', |
|
| 611 | + 'pass_oubli_mot' => 'نسيان كلمة السر', |
|
| 612 | + 'pass_procedure_changer' => 'من أجل تغيير كلمة السر، قم بأدخال عنوان البريد الالكتروني المرتبط بحسابك.', |
|
| 613 | + 'pass_quitter_fenetre' => 'إقفال هذه النافذة', |
|
| 614 | + 'pass_rappel_login' => 'تذكير: معرّفك هو «@login@».', |
|
| 615 | + 'pass_recevoir_mail' => 'تم ارسال رابط لإعادة تأصيل كلمة السر الى عنوان البريد لديك (اذا كان صالحاً).', |
|
| 616 | + 'pass_retour_public' => 'عودة إلى الموقع العام', |
|
| 617 | + 'pass_rien_a_faire_ici' => 'لا شغل لك هنا.', |
|
| 618 | + 'pass_vousinscrire' => 'تسجيلك في الموقع', |
|
| 619 | + 'precedent' => 'السابق', |
|
| 620 | + 'previsualisation' => 'عرض مسبق', |
|
| 621 | + 'previsualiser' => 'عرض مسبق', |
|
| 622 | 622 | |
| 623 | - // R |
|
| 624 | - 'retour' => 'عودة', |
|
| 623 | + // R |
|
| 624 | + 'retour' => 'عودة', |
|
| 625 | 625 | |
| 626 | - // S |
|
| 627 | - 'spip_conforme_dtd' => 'يعتبر SPIP أن هذا المستند مطابق لتحديد DOCTYPE:', |
|
| 628 | - 'squelette' => 'صفحة نموذجية', |
|
| 629 | - 'squelette_inclus_ligne' => 'صفحة نموذجية مدمجة، سطر', |
|
| 630 | - 'squelette_ligne' => 'صفحة نموذجية، سطر', |
|
| 631 | - 'stats_visites_et_popularite' => '@visites@ زيارة؛ شعبية: @popularite@', |
|
| 632 | - 'suivant' => 'التالي', |
|
| 626 | + // S |
|
| 627 | + 'spip_conforme_dtd' => 'يعتبر SPIP أن هذا المستند مطابق لتحديد DOCTYPE:', |
|
| 628 | + 'squelette' => 'صفحة نموذجية', |
|
| 629 | + 'squelette_inclus_ligne' => 'صفحة نموذجية مدمجة، سطر', |
|
| 630 | + 'squelette_ligne' => 'صفحة نموذجية، سطر', |
|
| 631 | + 'stats_visites_et_popularite' => '@visites@ زيارة؛ شعبية: @popularite@', |
|
| 632 | + 'suivant' => 'التالي', |
|
| 633 | 633 | |
| 634 | - // T |
|
| 635 | - 'taille_go' => '@taille@ غيغابايت', |
|
| 636 | - 'taille_go_bi' => '@taille@ غيغيبايت', |
|
| 637 | - 'taille_ko' => '@taille@ كيلوبايت', |
|
| 638 | - 'taille_ko_bi' => '@taille@ كيليبايت', |
|
| 639 | - 'taille_mo' => '@taille@ ميغابايت', |
|
| 640 | - 'taille_mo_bi' => '@taille@ ميغيبايت', |
|
| 641 | - 'taille_octets' => '@taille@ بايت', |
|
| 642 | - 'taille_octets_bi' => '@taille@ بايت', |
|
| 643 | - 'texte_actualite_site_1' => 'عندما تتأقلم مع واجهة النظام انقر على «', |
|
| 644 | - 'texte_actualite_site_2' => 'الواجهة الكاملة', |
|
| 645 | - 'texte_actualite_site_3' => '» لإتاحة المزيد من الوظائف.', |
|
| 646 | - 'texte_creation_automatique_vignette' => 'لقد تم تفعيل الإنشاء الآلي لمصغرات المعاينة. إذا استخدمت هذه الاستمارة لإدخال صور بتنسيق (أو تنسيقات) @gd_formats@، سيتم تزويدها بمصغر لا يزيد حجمه عن @taille_preview@ نقطة. ', |
|
| 647 | - 'texte_documents_associes' => 'المستندات التالية ترافق المقال، |
|
| 634 | + // T |
|
| 635 | + 'taille_go' => '@taille@ غيغابايت', |
|
| 636 | + 'taille_go_bi' => '@taille@ غيغيبايت', |
|
| 637 | + 'taille_ko' => '@taille@ كيلوبايت', |
|
| 638 | + 'taille_ko_bi' => '@taille@ كيليبايت', |
|
| 639 | + 'taille_mo' => '@taille@ ميغابايت', |
|
| 640 | + 'taille_mo_bi' => '@taille@ ميغيبايت', |
|
| 641 | + 'taille_octets' => '@taille@ بايت', |
|
| 642 | + 'taille_octets_bi' => '@taille@ بايت', |
|
| 643 | + 'texte_actualite_site_1' => 'عندما تتأقلم مع واجهة النظام انقر على «', |
|
| 644 | + 'texte_actualite_site_2' => 'الواجهة الكاملة', |
|
| 645 | + 'texte_actualite_site_3' => '» لإتاحة المزيد من الوظائف.', |
|
| 646 | + 'texte_creation_automatique_vignette' => 'لقد تم تفعيل الإنشاء الآلي لمصغرات المعاينة. إذا استخدمت هذه الاستمارة لإدخال صور بتنسيق (أو تنسيقات) @gd_formats@، سيتم تزويدها بمصغر لا يزيد حجمه عن @taille_preview@ نقطة. ', |
|
| 647 | + 'texte_documents_associes' => 'المستندات التالية ترافق المقال، |
|
| 648 | 648 | لكنها لم تُدرج |
| 649 | 649 | مباشرة. بالاعتماد على تصميم الموقع العمومي، |
| 650 | 650 | قد تظهر على شكل مستندات مرفقة.', |
| 651 | - 'texte_erreur_mise_niveau_base' => 'خطأ في قاعدة البيانات خلال الترقية. |
|
| 651 | + 'texte_erreur_mise_niveau_base' => 'خطأ في قاعدة البيانات خلال الترقية. |
|
| 652 | 652 | تعذر تمرير الصورة <b>@fichier@</b> (المقال @id_article@). |
| 653 | 653 | سجل هذا المرجع وحاول إعادة عملية |
| 654 | 654 | الترقية، وأخيراً تأكد من أن الصور لا تزال تظهر |
| 655 | 655 | في المقالات.', |
| 656 | - 'texte_erreur_visiteur' => 'حاولت الدخول إلى المجال الخاص بمعرّف لا يسمح بذلك.', |
|
| 657 | - 'texte_inc_auth_1' => 'عرّفت عن نفسك |
|
| 656 | + 'texte_erreur_visiteur' => 'حاولت الدخول إلى المجال الخاص بمعرّف لا يسمح بذلك.', |
|
| 657 | + 'texte_inc_auth_1' => 'عرّفت عن نفسك |
|
| 658 | 658 | بالمعرّف <b>@auth_login@</b>، لكنه غير (لم يعد) موجود في قاعدة البيانات. |
| 659 | 659 | حاول ', |
| 660 | - 'texte_inc_auth_2' => 'إعادة الاتصال', |
|
| 661 | - 'texte_inc_auth_3' => '، بعد إنهاء المتصفح ثم |
|
| 660 | + 'texte_inc_auth_2' => 'إعادة الاتصال', |
|
| 661 | + 'texte_inc_auth_3' => '، بعد إنهاء المتصفح ثم |
|
| 662 | 662 | إعادة تشغيله إذا اقتضت الحاجة.', |
| 663 | - 'texte_inc_config' => 'التغييرات الداخلة على هذه الصفحة تؤثر بشكل ملحوظ على |
|
| 663 | + 'texte_inc_config' => 'التغييرات الداخلة على هذه الصفحة تؤثر بشكل ملحوظ على |
|
| 664 | 664 | تشغيل الموقع. يستحسن عدم إدخال تغييرات قبل |
| 665 | 665 | التأقلم مع نظام SPIP للنشر. <br /><br /><b>بشكل |
| 666 | 666 | عام، ننصحك |
| 667 | 667 | بحصر التعامل مع هذه الصفحات بالمسؤول الأساسي عن تصميم الموقع.</b>', |
| 668 | - 'texte_inc_meta_1' => 'واجه النظام خطأً خلال كتابة الملف <code>@fichier@</code>. بصفتك أحد مدراء الموقع، الرجاء', |
|
| 669 | - 'texte_inc_meta_2' => 'التأكد من حقوق الكتابة', |
|
| 670 | - 'texte_inc_meta_3' => 'الخاصة بالدليل <code>@repertoire@</code>. ', |
|
| 671 | - 'texte_statut_en_cours_redaction' => 'قيد التحرير', |
|
| 672 | - 'texte_statut_poubelle' => 'إلى المهملات', |
|
| 673 | - 'texte_statut_propose_evaluation' => 'معروض للتقييم', |
|
| 674 | - 'texte_statut_publie' => 'منشور', |
|
| 675 | - 'texte_statut_refuse' => 'مرفوض', |
|
| 676 | - 'titre_ajouter_mot_cle' => 'إضافة مفتاح:', |
|
| 677 | - 'titre_cadre_raccourcis' => 'اختصارات:', |
|
| 678 | - 'titre_changer_couleur_interface' => 'تغيير لون الواجهة', |
|
| 679 | - 'titre_image_admin_article' => 'أنت مخول إدارة هذا المقال', |
|
| 680 | - 'titre_image_administrateur' => 'مدير', |
|
| 681 | - 'titre_image_aide' => 'تعليمات حول هذا العنصر', |
|
| 682 | - 'titre_image_auteur_supprime' => 'مؤلف محذوف', |
|
| 683 | - 'titre_image_redacteur' => 'محرر دون إذن دخول', |
|
| 684 | - 'titre_image_redacteur_02' => 'محرر', |
|
| 685 | - 'titre_image_selecteur' => 'عرض القائمة', |
|
| 686 | - 'titre_image_visiteur' => 'زائر', |
|
| 687 | - 'titre_joindre_document' => 'إرفاق مستند', |
|
| 688 | - 'titre_mots_cles' => 'المفاتيح', |
|
| 689 | - 'titre_probleme_technique' => 'تحذير: مشكلة تقنية (خادم SQL) تمنع الدخول إلى هذا الجزء من الموقع. شكراً على تفهمكم.', |
|
| 690 | - 'titre_publier_document' => 'نشر مستند في هذا القسم', |
|
| 691 | - 'titre_signatures_attente' => 'تواقيع بانتظار التصديق', |
|
| 692 | - 'titre_signatures_confirmees' => 'توقيعات مصدّقة', |
|
| 693 | - 'titre_statistiques' => 'إحصاءات الموقع', |
|
| 694 | - 'titre_titre_document' => 'اسم المستند: ', |
|
| 695 | - 'todo' => 'قريباً', |
|
| 696 | - 'trad_definir_reference' => 'اختيار "@titre@" كمرجع للترجمات', |
|
| 697 | - 'trad_reference' => '(مرجع الترجمات)', |
|
| 668 | + 'texte_inc_meta_1' => 'واجه النظام خطأً خلال كتابة الملف <code>@fichier@</code>. بصفتك أحد مدراء الموقع، الرجاء', |
|
| 669 | + 'texte_inc_meta_2' => 'التأكد من حقوق الكتابة', |
|
| 670 | + 'texte_inc_meta_3' => 'الخاصة بالدليل <code>@repertoire@</code>. ', |
|
| 671 | + 'texte_statut_en_cours_redaction' => 'قيد التحرير', |
|
| 672 | + 'texte_statut_poubelle' => 'إلى المهملات', |
|
| 673 | + 'texte_statut_propose_evaluation' => 'معروض للتقييم', |
|
| 674 | + 'texte_statut_publie' => 'منشور', |
|
| 675 | + 'texte_statut_refuse' => 'مرفوض', |
|
| 676 | + 'titre_ajouter_mot_cle' => 'إضافة مفتاح:', |
|
| 677 | + 'titre_cadre_raccourcis' => 'اختصارات:', |
|
| 678 | + 'titre_changer_couleur_interface' => 'تغيير لون الواجهة', |
|
| 679 | + 'titre_image_admin_article' => 'أنت مخول إدارة هذا المقال', |
|
| 680 | + 'titre_image_administrateur' => 'مدير', |
|
| 681 | + 'titre_image_aide' => 'تعليمات حول هذا العنصر', |
|
| 682 | + 'titre_image_auteur_supprime' => 'مؤلف محذوف', |
|
| 683 | + 'titre_image_redacteur' => 'محرر دون إذن دخول', |
|
| 684 | + 'titre_image_redacteur_02' => 'محرر', |
|
| 685 | + 'titre_image_selecteur' => 'عرض القائمة', |
|
| 686 | + 'titre_image_visiteur' => 'زائر', |
|
| 687 | + 'titre_joindre_document' => 'إرفاق مستند', |
|
| 688 | + 'titre_mots_cles' => 'المفاتيح', |
|
| 689 | + 'titre_probleme_technique' => 'تحذير: مشكلة تقنية (خادم SQL) تمنع الدخول إلى هذا الجزء من الموقع. شكراً على تفهمكم.', |
|
| 690 | + 'titre_publier_document' => 'نشر مستند في هذا القسم', |
|
| 691 | + 'titre_signatures_attente' => 'تواقيع بانتظار التصديق', |
|
| 692 | + 'titre_signatures_confirmees' => 'توقيعات مصدّقة', |
|
| 693 | + 'titre_statistiques' => 'إحصاءات الموقع', |
|
| 694 | + 'titre_titre_document' => 'اسم المستند: ', |
|
| 695 | + 'todo' => 'قريباً', |
|
| 696 | + 'trad_definir_reference' => 'اختيار "@titre@" كمرجع للترجمات', |
|
| 697 | + 'trad_reference' => '(مرجع الترجمات)', |
|
| 698 | 698 | |
| 699 | - // U |
|
| 700 | - 'upload_limit' => 'حجم هذا الملف أكبر مما يتحمل جهاز الخدمة: الحجم الأقصى المسموح به <b>للتنزيل</b> هو @max@.', |
|
| 699 | + // U |
|
| 700 | + 'upload_limit' => 'حجم هذا الملف أكبر مما يتحمل جهاز الخدمة: الحجم الأقصى المسموح به <b>للتنزيل</b> هو @max@.', |
|
| 701 | 701 | |
| 702 | - // Z |
|
| 703 | - 'zbug_balise_b_aval' => ': العلامة B متأخرة', |
|
| 704 | - 'zbug_balise_inexistante' => 'خطأ في الاعلان عن العلامة @balise@ لـ@from@', |
|
| 705 | - 'zbug_balise_sans_argument' => 'عامل غير موجود في علامة @balise@', |
|
| 706 | - 'zbug_boucle' => 'حلقة', |
|
| 707 | - 'zbug_boucle_recursive_undef' => 'حلقة دورية غير معرّفة: @nom@', |
|
| 708 | - 'zbug_calcul' => 'حساب', |
|
| 709 | - 'zbug_champ_hors_boucle' => 'الحقل @champ@ خارج الحلقة', |
|
| 710 | - 'zbug_champ_hors_critere' => 'الحقل @champ@ خارج المقياس @critere@', |
|
| 711 | - 'zbug_champ_hors_motif' => 'الحقل @champ@ خارج سياق @motif@', |
|
| 712 | - 'zbug_code' => 'الرموز البرمجية', |
|
| 713 | - 'zbug_critere_inconnu' => 'معيار غير معروف @critere@', |
|
| 714 | - 'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} على جدول دون مفتاح اساسي افرادي', |
|
| 715 | - 'zbug_distant_interdit' => 'عملية خارجية ممنوعة', |
|
| 716 | - 'zbug_doublon_table_sans_cle_primaire' => 'قيمة مكررة في جدول لا يملك مفتاح أساسي', |
|
| 717 | - 'zbug_doublon_table_sans_index' => 'تكرار في جدول غير مفهرس', |
|
| 718 | - 'zbug_erreur_boucle_double' => 'تعريف متكرر للحلقة @id@', |
|
| 719 | - 'zbug_erreur_boucle_fermant' => 'علامة إغلاق غائبة في حلقة @id@', |
|
| 720 | - 'zbug_erreur_boucle_syntaxe' => 'تركيب حلقة @id@ غير صحيح', |
|
| 721 | - 'zbug_erreur_compilation' => 'خطأ تصنيف', |
|
| 722 | - 'zbug_erreur_execution_page' => 'خطأ في التنفيذ', |
|
| 723 | - 'zbug_erreur_filtre' => 'المرشح @filtre@ غير معرّف ', |
|
| 724 | - 'zbug_erreur_filtre_nbarg_min' => 'المرشح @filtre@ : ينقص @nb@ عامل', |
|
| 725 | - 'zbug_erreur_meme_parent' => 'لا ينطبق معيار {meme_parent} إلا على حلقتي (FORUMS) أو (RUBRIQUES)', |
|
| 726 | - 'zbug_erreur_squelette' => 'خطأ في الصفحة النموذجية', |
|
| 727 | - 'zbug_hors_compilation' => 'خارج التصنيف', |
|
| 728 | - 'zbug_info_erreur_squelette' => 'خطأ في الموفع', |
|
| 729 | - 'zbug_inversion_ordre_inexistant' => 'عكس ترتيب غير موجود أصلاً', |
|
| 730 | - 'zbug_pagination_sans_critere' => 'علامة PAGINATION# بدون معيار {pagination} أو مستخدمة في حلقة دورية', |
|
| 731 | - 'zbug_parametres_inclus_incorrects' => 'عامل إدراج غير صحيحة: @param@', |
|
| 732 | - 'zbug_profile' => 'فترة المعالجة: @time@', |
|
| 733 | - 'zbug_resultat' => 'النتيجة', |
|
| 734 | - 'zbug_serveur_indefini' => 'خادم SQL غير محدد', |
|
| 735 | - 'zbug_statistiques' => 'احصاءات استفسارات SQL مرتبة حسب المدة', |
|
| 736 | - 'zbug_table_inconnue' => 'جدول SQL هو «@table@» غير معروف', |
|
| 737 | - 'zxml_connus_attributs' => 'خاصيات معروفة', |
|
| 738 | - 'zxml_de' => 'من', |
|
| 739 | - 'zxml_inconnu_attribut' => 'خاصية غير معروفة', |
|
| 740 | - 'zxml_inconnu_balise' => 'علامة غير معروفة', |
|
| 741 | - 'zxml_inconnu_entite' => 'كائن غير معروف', |
|
| 742 | - 'zxml_inconnu_id' => 'هوية ID غير معروفة', |
|
| 743 | - 'zxml_mais_de' => 'لكن من', |
|
| 744 | - 'zxml_non_conforme' => 'غير مطابق للشكل', |
|
| 745 | - 'zxml_non_fils' => 'ليس من سلالة', |
|
| 746 | - 'zxml_nonvide_balise' => 'علامة غير فارغة', |
|
| 747 | - 'zxml_obligatoire_attribut' => 'خاصية إجبارية لكنها غير موجودة في', |
|
| 748 | - 'zxml_succession_fils_incorrecte' => 'تتابع سلالات غير سليم', |
|
| 749 | - 'zxml_survoler' => 'الحوم لعرض الصحيح', |
|
| 750 | - 'zxml_valeur_attribut' => 'قيمة الخاصية', |
|
| 751 | - 'zxml_vide_balise' => 'علامة فارغة', |
|
| 752 | - 'zxml_vu' => 'ظهر مسبقاً' |
|
| 702 | + // Z |
|
| 703 | + 'zbug_balise_b_aval' => ': العلامة B متأخرة', |
|
| 704 | + 'zbug_balise_inexistante' => 'خطأ في الاعلان عن العلامة @balise@ لـ@from@', |
|
| 705 | + 'zbug_balise_sans_argument' => 'عامل غير موجود في علامة @balise@', |
|
| 706 | + 'zbug_boucle' => 'حلقة', |
|
| 707 | + 'zbug_boucle_recursive_undef' => 'حلقة دورية غير معرّفة: @nom@', |
|
| 708 | + 'zbug_calcul' => 'حساب', |
|
| 709 | + 'zbug_champ_hors_boucle' => 'الحقل @champ@ خارج الحلقة', |
|
| 710 | + 'zbug_champ_hors_critere' => 'الحقل @champ@ خارج المقياس @critere@', |
|
| 711 | + 'zbug_champ_hors_motif' => 'الحقل @champ@ خارج سياق @motif@', |
|
| 712 | + 'zbug_code' => 'الرموز البرمجية', |
|
| 713 | + 'zbug_critere_inconnu' => 'معيار غير معروف @critere@', |
|
| 714 | + 'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} على جدول دون مفتاح اساسي افرادي', |
|
| 715 | + 'zbug_distant_interdit' => 'عملية خارجية ممنوعة', |
|
| 716 | + 'zbug_doublon_table_sans_cle_primaire' => 'قيمة مكررة في جدول لا يملك مفتاح أساسي', |
|
| 717 | + 'zbug_doublon_table_sans_index' => 'تكرار في جدول غير مفهرس', |
|
| 718 | + 'zbug_erreur_boucle_double' => 'تعريف متكرر للحلقة @id@', |
|
| 719 | + 'zbug_erreur_boucle_fermant' => 'علامة إغلاق غائبة في حلقة @id@', |
|
| 720 | + 'zbug_erreur_boucle_syntaxe' => 'تركيب حلقة @id@ غير صحيح', |
|
| 721 | + 'zbug_erreur_compilation' => 'خطأ تصنيف', |
|
| 722 | + 'zbug_erreur_execution_page' => 'خطأ في التنفيذ', |
|
| 723 | + 'zbug_erreur_filtre' => 'المرشح @filtre@ غير معرّف ', |
|
| 724 | + 'zbug_erreur_filtre_nbarg_min' => 'المرشح @filtre@ : ينقص @nb@ عامل', |
|
| 725 | + 'zbug_erreur_meme_parent' => 'لا ينطبق معيار {meme_parent} إلا على حلقتي (FORUMS) أو (RUBRIQUES)', |
|
| 726 | + 'zbug_erreur_squelette' => 'خطأ في الصفحة النموذجية', |
|
| 727 | + 'zbug_hors_compilation' => 'خارج التصنيف', |
|
| 728 | + 'zbug_info_erreur_squelette' => 'خطأ في الموفع', |
|
| 729 | + 'zbug_inversion_ordre_inexistant' => 'عكس ترتيب غير موجود أصلاً', |
|
| 730 | + 'zbug_pagination_sans_critere' => 'علامة PAGINATION# بدون معيار {pagination} أو مستخدمة في حلقة دورية', |
|
| 731 | + 'zbug_parametres_inclus_incorrects' => 'عامل إدراج غير صحيحة: @param@', |
|
| 732 | + 'zbug_profile' => 'فترة المعالجة: @time@', |
|
| 733 | + 'zbug_resultat' => 'النتيجة', |
|
| 734 | + 'zbug_serveur_indefini' => 'خادم SQL غير محدد', |
|
| 735 | + 'zbug_statistiques' => 'احصاءات استفسارات SQL مرتبة حسب المدة', |
|
| 736 | + 'zbug_table_inconnue' => 'جدول SQL هو «@table@» غير معروف', |
|
| 737 | + 'zxml_connus_attributs' => 'خاصيات معروفة', |
|
| 738 | + 'zxml_de' => 'من', |
|
| 739 | + 'zxml_inconnu_attribut' => 'خاصية غير معروفة', |
|
| 740 | + 'zxml_inconnu_balise' => 'علامة غير معروفة', |
|
| 741 | + 'zxml_inconnu_entite' => 'كائن غير معروف', |
|
| 742 | + 'zxml_inconnu_id' => 'هوية ID غير معروفة', |
|
| 743 | + 'zxml_mais_de' => 'لكن من', |
|
| 744 | + 'zxml_non_conforme' => 'غير مطابق للشكل', |
|
| 745 | + 'zxml_non_fils' => 'ليس من سلالة', |
|
| 746 | + 'zxml_nonvide_balise' => 'علامة غير فارغة', |
|
| 747 | + 'zxml_obligatoire_attribut' => 'خاصية إجبارية لكنها غير موجودة في', |
|
| 748 | + 'zxml_succession_fils_incorrecte' => 'تتابع سلالات غير سليم', |
|
| 749 | + 'zxml_survoler' => 'الحوم لعرض الصحيح', |
|
| 750 | + 'zxml_valeur_attribut' => 'قيمة الخاصية', |
|
| 751 | + 'zxml_vide_balise' => 'علامة فارغة', |
|
| 752 | + 'zxml_vu' => 'ظهر مسبقاً' |
|
| 753 | 753 | ); |
@@ -16,7 +16,7 @@ discard block |
||
| 16 | 16 | **/ |
| 17 | 17 | |
| 18 | 18 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 19 | - return; |
|
| 19 | + return; |
|
| 20 | 20 | } |
| 21 | 21 | |
| 22 | 22 | include_spip('inc/texte_mini'); |
@@ -33,7 +33,7 @@ discard block |
||
| 33 | 33 | * @return array Tablea ('','') |
| 34 | 34 | */ |
| 35 | 35 | function definir_raccourcis_alineas() { |
| 36 | - return ['', '']; |
|
| 36 | + return ['', '']; |
|
| 37 | 37 | } |
| 38 | 38 | |
| 39 | 39 | |
@@ -46,7 +46,7 @@ discard block |
||
| 46 | 46 | * @return string |
| 47 | 47 | */ |
| 48 | 48 | function traiter_tableau($bloc) { |
| 49 | - return $bloc; |
|
| 49 | + return $bloc; |
|
| 50 | 50 | } |
| 51 | 51 | |
| 52 | 52 | |
@@ -60,7 +60,7 @@ discard block |
||
| 60 | 60 | * @return string |
| 61 | 61 | */ |
| 62 | 62 | function traiter_listes($texte) { |
| 63 | - return $texte; |
|
| 63 | + return $texte; |
|
| 64 | 64 | } |
| 65 | 65 | |
| 66 | 66 | /** |
@@ -76,16 +76,16 @@ discard block |
||
| 76 | 76 | */ |
| 77 | 77 | function traiter_raccourcis($letexte) { |
| 78 | 78 | |
| 79 | - // Appeler les fonctions de pre_traitement |
|
| 80 | - $letexte = pipeline('pre_propre', $letexte); |
|
| 79 | + // Appeler les fonctions de pre_traitement |
|
| 80 | + $letexte = pipeline('pre_propre', $letexte); |
|
| 81 | 81 | |
| 82 | - // APPELER ICI UN PIPELINE traiter_raccourcis ? |
|
| 83 | - // $letexte = pipeline('traiter_raccourcis', $letexte); |
|
| 82 | + // APPELER ICI UN PIPELINE traiter_raccourcis ? |
|
| 83 | + // $letexte = pipeline('traiter_raccourcis', $letexte); |
|
| 84 | 84 | |
| 85 | - // Appeler les fonctions de post-traitement |
|
| 86 | - $letexte = pipeline('post_propre', $letexte); |
|
| 85 | + // Appeler les fonctions de post-traitement |
|
| 86 | + $letexte = pipeline('post_propre', $letexte); |
|
| 87 | 87 | |
| 88 | - return $letexte; |
|
| 88 | + return $letexte; |
|
| 89 | 89 | } |
| 90 | 90 | |
| 91 | 91 | /************************************************************************************************************************* |
@@ -101,22 +101,22 @@ discard block |
||
| 101 | 101 | * @return string |
| 102 | 102 | */ |
| 103 | 103 | function echappe_js($t, $class = ' class = "echappe-js"') { |
| 104 | - foreach (['script', 'iframe'] as $tag) { |
|
| 105 | - if ( |
|
| 106 | - stripos($t, (string) "<$tag") !== false |
|
| 107 | - and preg_match_all(',<' . $tag . '.*?($|</' . $tag . '.),isS', $t, $r, PREG_SET_ORDER) |
|
| 108 | - ) { |
|
| 109 | - foreach ($r as $regs) { |
|
| 110 | - $t = str_replace( |
|
| 111 | - $regs[0], |
|
| 112 | - "<code$class>" . nl2br(spip_htmlspecialchars($regs[0])) . '</code>', |
|
| 113 | - $t |
|
| 114 | - ); |
|
| 115 | - } |
|
| 116 | - } |
|
| 117 | - } |
|
| 118 | - |
|
| 119 | - return $t; |
|
| 104 | + foreach (['script', 'iframe'] as $tag) { |
|
| 105 | + if ( |
|
| 106 | + stripos($t, (string) "<$tag") !== false |
|
| 107 | + and preg_match_all(',<' . $tag . '.*?($|</' . $tag . '.),isS', $t, $r, PREG_SET_ORDER) |
|
| 108 | + ) { |
|
| 109 | + foreach ($r as $regs) { |
|
| 110 | + $t = str_replace( |
|
| 111 | + $regs[0], |
|
| 112 | + "<code$class>" . nl2br(spip_htmlspecialchars($regs[0])) . '</code>', |
|
| 113 | + $t |
|
| 114 | + ); |
|
| 115 | + } |
|
| 116 | + } |
|
| 117 | + } |
|
| 118 | + |
|
| 119 | + return $t; |
|
| 120 | 120 | } |
| 121 | 121 | |
| 122 | 122 | |
@@ -145,55 +145,55 @@ discard block |
||
| 145 | 145 | * Code protégé |
| 146 | 146 | **/ |
| 147 | 147 | function interdire_scripts($arg, $mode_filtre = null) { |
| 148 | - // on memorise le resultat sur les arguments non triviaux |
|
| 149 | - static $dejavu = []; |
|
| 150 | - |
|
| 151 | - // Attention, si ce n'est pas une chaine, laisser intact |
|
| 152 | - if (!$arg or !is_string($arg) or !strstr($arg, '<')) { |
|
| 153 | - return $arg; |
|
| 154 | - } |
|
| 155 | - |
|
| 156 | - if (is_null($mode_filtre) or !in_array($mode_filtre, [-1, 0, 1])) { |
|
| 157 | - $mode_filtre = $GLOBALS['filtrer_javascript']; |
|
| 158 | - } |
|
| 159 | - |
|
| 160 | - if (isset($dejavu[$mode_filtre][$arg])) { |
|
| 161 | - return $dejavu[$mode_filtre][$arg]; |
|
| 162 | - } |
|
| 163 | - |
|
| 164 | - // echapper les tags asp/php |
|
| 165 | - $t = str_replace('<' . '%', '<%', $arg); |
|
| 166 | - |
|
| 167 | - // echapper le php |
|
| 168 | - $t = str_replace('<' . '?', '<?', $t); |
|
| 169 | - |
|
| 170 | - // echapper le < script language=php > |
|
| 171 | - $t = preg_replace(',<(script\b[^>]+\blanguage\b[^\w>]+php\b),UimsS', '<\1', $t); |
|
| 172 | - |
|
| 173 | - // Pour le js, trois modes : parano (-1), prive (0), ok (1) |
|
| 174 | - switch ($mode_filtre) { |
|
| 175 | - case 0: |
|
| 176 | - if (!_DIR_RESTREINT) { |
|
| 177 | - $t = echappe_js($t); |
|
| 178 | - } |
|
| 179 | - break; |
|
| 180 | - case -1: |
|
| 181 | - $t = echappe_js($t); |
|
| 182 | - break; |
|
| 183 | - } |
|
| 184 | - |
|
| 185 | - // pas de <base href /> svp ! |
|
| 186 | - $t = preg_replace(',<(base\b),iS', '<\1', $t); |
|
| 187 | - |
|
| 188 | - // Reinserer les echappements des modeles |
|
| 189 | - if (defined('_PROTEGE_JS_MODELES')) { |
|
| 190 | - $t = echappe_retour($t, 'javascript' . _PROTEGE_JS_MODELES); |
|
| 191 | - } |
|
| 192 | - if (defined('_PROTEGE_PHP_MODELES')) { |
|
| 193 | - $t = echappe_retour($t, 'php' . _PROTEGE_PHP_MODELES); |
|
| 194 | - } |
|
| 195 | - |
|
| 196 | - return $dejavu[$mode_filtre][$arg] = $t; |
|
| 148 | + // on memorise le resultat sur les arguments non triviaux |
|
| 149 | + static $dejavu = []; |
|
| 150 | + |
|
| 151 | + // Attention, si ce n'est pas une chaine, laisser intact |
|
| 152 | + if (!$arg or !is_string($arg) or !strstr($arg, '<')) { |
|
| 153 | + return $arg; |
|
| 154 | + } |
|
| 155 | + |
|
| 156 | + if (is_null($mode_filtre) or !in_array($mode_filtre, [-1, 0, 1])) { |
|
| 157 | + $mode_filtre = $GLOBALS['filtrer_javascript']; |
|
| 158 | + } |
|
| 159 | + |
|
| 160 | + if (isset($dejavu[$mode_filtre][$arg])) { |
|
| 161 | + return $dejavu[$mode_filtre][$arg]; |
|
| 162 | + } |
|
| 163 | + |
|
| 164 | + // echapper les tags asp/php |
|
| 165 | + $t = str_replace('<' . '%', '<%', $arg); |
|
| 166 | + |
|
| 167 | + // echapper le php |
|
| 168 | + $t = str_replace('<' . '?', '<?', $t); |
|
| 169 | + |
|
| 170 | + // echapper le < script language=php > |
|
| 171 | + $t = preg_replace(',<(script\b[^>]+\blanguage\b[^\w>]+php\b),UimsS', '<\1', $t); |
|
| 172 | + |
|
| 173 | + // Pour le js, trois modes : parano (-1), prive (0), ok (1) |
|
| 174 | + switch ($mode_filtre) { |
|
| 175 | + case 0: |
|
| 176 | + if (!_DIR_RESTREINT) { |
|
| 177 | + $t = echappe_js($t); |
|
| 178 | + } |
|
| 179 | + break; |
|
| 180 | + case -1: |
|
| 181 | + $t = echappe_js($t); |
|
| 182 | + break; |
|
| 183 | + } |
|
| 184 | + |
|
| 185 | + // pas de <base href /> svp ! |
|
| 186 | + $t = preg_replace(',<(base\b),iS', '<\1', $t); |
|
| 187 | + |
|
| 188 | + // Reinserer les echappements des modeles |
|
| 189 | + if (defined('_PROTEGE_JS_MODELES')) { |
|
| 190 | + $t = echappe_retour($t, 'javascript' . _PROTEGE_JS_MODELES); |
|
| 191 | + } |
|
| 192 | + if (defined('_PROTEGE_PHP_MODELES')) { |
|
| 193 | + $t = echappe_retour($t, 'php' . _PROTEGE_PHP_MODELES); |
|
| 194 | + } |
|
| 195 | + |
|
| 196 | + return $dejavu[$mode_filtre][$arg] = $t; |
|
| 197 | 197 | } |
| 198 | 198 | |
| 199 | 199 | |
@@ -222,66 +222,66 @@ discard block |
||
| 222 | 222 | * texte transformé |
| 223 | 223 | **/ |
| 224 | 224 | function typo($letexte, $echapper = true, $connect = null, $env = []) { |
| 225 | - // Plus vite ! |
|
| 226 | - if (!$letexte) { |
|
| 227 | - return $letexte; |
|
| 228 | - } |
|
| 229 | - |
|
| 230 | - // les appels directs a cette fonction depuis le php de l'espace |
|
| 231 | - // prive etant historiquement ecrit sans argment $connect |
|
| 232 | - // on utilise la presence de celui-ci pour distinguer les cas |
|
| 233 | - // ou il faut passer interdire_script explicitement |
|
| 234 | - // les appels dans les squelettes (de l'espace prive) fournissant un $connect |
|
| 235 | - // ne seront pas perturbes |
|
| 236 | - $interdire_script = false; |
|
| 237 | - if (is_null($connect)) { |
|
| 238 | - $connect = ''; |
|
| 239 | - $interdire_script = true; |
|
| 240 | - $env['espace_prive'] = test_espace_prive(); |
|
| 241 | - } |
|
| 242 | - |
|
| 243 | - // Echapper les codes <html> etc |
|
| 244 | - if ($echapper) { |
|
| 245 | - $letexte = echappe_html($letexte, 'TYPO'); |
|
| 246 | - } |
|
| 247 | - |
|
| 248 | - // |
|
| 249 | - // Installer les modeles, notamment images et documents ; |
|
| 250 | - // |
|
| 251 | - // NOTE : propre() ne passe pas par ici mais directement par corriger_typo |
|
| 252 | - // cf. inc/lien |
|
| 253 | - |
|
| 254 | - $letexte = traiter_modeles($mem = $letexte, false, $echapper ? 'TYPO' : '', $connect ?? '', null, $env); |
|
| 255 | - if ($letexte != $mem) { |
|
| 256 | - $echapper = true; |
|
| 257 | - } |
|
| 258 | - unset($mem); |
|
| 259 | - |
|
| 260 | - $letexte = corriger_typo($letexte); |
|
| 261 | - $letexte = echapper_faux_tags($letexte); |
|
| 262 | - |
|
| 263 | - // reintegrer les echappements |
|
| 264 | - if ($echapper) { |
|
| 265 | - $letexte = echappe_retour($letexte, 'TYPO'); |
|
| 266 | - } |
|
| 267 | - |
|
| 268 | - // Dans les appels directs hors squelette, securiser ici aussi |
|
| 269 | - if ($interdire_script) { |
|
| 270 | - $letexte = interdire_scripts($letexte); |
|
| 271 | - } |
|
| 272 | - |
|
| 273 | - // Dans l'espace prive on se mefie de tout contenu dangereux |
|
| 274 | - // https://core.spip.net/issues/3371 |
|
| 275 | - // et aussi dans l'espace public si la globale filtrer_javascript = -1 |
|
| 276 | - // https://core.spip.net/issues/4166 |
|
| 277 | - if ( |
|
| 278 | - $GLOBALS['filtrer_javascript'] == -1 |
|
| 279 | - or (isset($env['espace_prive']) and $env['espace_prive'] and $GLOBALS['filtrer_javascript'] <= 0) |
|
| 280 | - ) { |
|
| 281 | - $letexte = echapper_html_suspect($letexte, [], $connect, $env); |
|
| 282 | - } |
|
| 283 | - |
|
| 284 | - return $letexte; |
|
| 225 | + // Plus vite ! |
|
| 226 | + if (!$letexte) { |
|
| 227 | + return $letexte; |
|
| 228 | + } |
|
| 229 | + |
|
| 230 | + // les appels directs a cette fonction depuis le php de l'espace |
|
| 231 | + // prive etant historiquement ecrit sans argment $connect |
|
| 232 | + // on utilise la presence de celui-ci pour distinguer les cas |
|
| 233 | + // ou il faut passer interdire_script explicitement |
|
| 234 | + // les appels dans les squelettes (de l'espace prive) fournissant un $connect |
|
| 235 | + // ne seront pas perturbes |
|
| 236 | + $interdire_script = false; |
|
| 237 | + if (is_null($connect)) { |
|
| 238 | + $connect = ''; |
|
| 239 | + $interdire_script = true; |
|
| 240 | + $env['espace_prive'] = test_espace_prive(); |
|
| 241 | + } |
|
| 242 | + |
|
| 243 | + // Echapper les codes <html> etc |
|
| 244 | + if ($echapper) { |
|
| 245 | + $letexte = echappe_html($letexte, 'TYPO'); |
|
| 246 | + } |
|
| 247 | + |
|
| 248 | + // |
|
| 249 | + // Installer les modeles, notamment images et documents ; |
|
| 250 | + // |
|
| 251 | + // NOTE : propre() ne passe pas par ici mais directement par corriger_typo |
|
| 252 | + // cf. inc/lien |
|
| 253 | + |
|
| 254 | + $letexte = traiter_modeles($mem = $letexte, false, $echapper ? 'TYPO' : '', $connect ?? '', null, $env); |
|
| 255 | + if ($letexte != $mem) { |
|
| 256 | + $echapper = true; |
|
| 257 | + } |
|
| 258 | + unset($mem); |
|
| 259 | + |
|
| 260 | + $letexte = corriger_typo($letexte); |
|
| 261 | + $letexte = echapper_faux_tags($letexte); |
|
| 262 | + |
|
| 263 | + // reintegrer les echappements |
|
| 264 | + if ($echapper) { |
|
| 265 | + $letexte = echappe_retour($letexte, 'TYPO'); |
|
| 266 | + } |
|
| 267 | + |
|
| 268 | + // Dans les appels directs hors squelette, securiser ici aussi |
|
| 269 | + if ($interdire_script) { |
|
| 270 | + $letexte = interdire_scripts($letexte); |
|
| 271 | + } |
|
| 272 | + |
|
| 273 | + // Dans l'espace prive on se mefie de tout contenu dangereux |
|
| 274 | + // https://core.spip.net/issues/3371 |
|
| 275 | + // et aussi dans l'espace public si la globale filtrer_javascript = -1 |
|
| 276 | + // https://core.spip.net/issues/4166 |
|
| 277 | + if ( |
|
| 278 | + $GLOBALS['filtrer_javascript'] == -1 |
|
| 279 | + or (isset($env['espace_prive']) and $env['espace_prive'] and $GLOBALS['filtrer_javascript'] <= 0) |
|
| 280 | + ) { |
|
| 281 | + $letexte = echapper_html_suspect($letexte, [], $connect, $env); |
|
| 282 | + } |
|
| 283 | + |
|
| 284 | + return $letexte; |
|
| 285 | 285 | } |
| 286 | 286 | |
| 287 | 287 | // Correcteur typographique |
@@ -306,57 +306,57 @@ discard block |
||
| 306 | 306 | */ |
| 307 | 307 | function corriger_typo($letexte, $lang = '') { |
| 308 | 308 | |
| 309 | - // Plus vite ! |
|
| 310 | - if (!$letexte) { |
|
| 311 | - return $letexte; |
|
| 312 | - } |
|
| 313 | - |
|
| 314 | - $letexte = pipeline('pre_typo', $letexte); |
|
| 315 | - |
|
| 316 | - // Caracteres de controle "illegaux" |
|
| 317 | - $letexte = corriger_caracteres($letexte); |
|
| 318 | - |
|
| 319 | - // Proteger les caracteres typographiques a l'interieur des tags html |
|
| 320 | - if (preg_match_all(_TYPO_BALISE, $letexte, $regs, PREG_SET_ORDER)) { |
|
| 321 | - foreach ($regs as $reg) { |
|
| 322 | - $insert = $reg[0]; |
|
| 323 | - // hack: on transforme les caracteres a proteger en les remplacant |
|
| 324 | - // par des caracteres "illegaux". (cf corriger_caracteres()) |
|
| 325 | - $insert = strtr($insert, _TYPO_PROTEGER, _TYPO_PROTECTEUR); |
|
| 326 | - $letexte = str_replace($reg[0], $insert, $letexte); |
|
| 327 | - } |
|
| 328 | - } |
|
| 329 | - |
|
| 330 | - // trouver les blocs idiomes et les traiter à part |
|
| 331 | - $letexte = extraire_idiome($ei = $letexte, $lang, true); |
|
| 332 | - $ei = ($ei !== $letexte); |
|
| 333 | - |
|
| 334 | - // trouver les blocs multi et les traiter a part |
|
| 335 | - $letexte = extraire_multi($em = $letexte, $lang, true); |
|
| 336 | - $em = ($em !== $letexte); |
|
| 337 | - |
|
| 338 | - // Charger & appliquer les fonctions de typographie |
|
| 339 | - $typographie = charger_fonction(lang_typo($lang), 'typographie'); |
|
| 340 | - $letexte = $typographie($letexte); |
|
| 341 | - |
|
| 342 | - // Les citations en une autre langue, s'il y a lieu |
|
| 343 | - if ($em) { |
|
| 344 | - $letexte = echappe_retour($letexte, 'multi'); |
|
| 345 | - } |
|
| 346 | - if ($ei) { |
|
| 347 | - $letexte = echappe_retour($letexte, 'idiome'); |
|
| 348 | - } |
|
| 349 | - |
|
| 350 | - // Retablir les caracteres proteges |
|
| 351 | - $letexte = strtr($letexte, _TYPO_PROTECTEUR, _TYPO_PROTEGER); |
|
| 352 | - |
|
| 353 | - // pipeline |
|
| 354 | - $letexte = pipeline('post_typo', $letexte); |
|
| 355 | - |
|
| 356 | - # un message pour abs_url - on est passe en mode texte |
|
| 357 | - $GLOBALS['mode_abs_url'] = 'texte'; |
|
| 358 | - |
|
| 359 | - return $letexte; |
|
| 309 | + // Plus vite ! |
|
| 310 | + if (!$letexte) { |
|
| 311 | + return $letexte; |
|
| 312 | + } |
|
| 313 | + |
|
| 314 | + $letexte = pipeline('pre_typo', $letexte); |
|
| 315 | + |
|
| 316 | + // Caracteres de controle "illegaux" |
|
| 317 | + $letexte = corriger_caracteres($letexte); |
|
| 318 | + |
|
| 319 | + // Proteger les caracteres typographiques a l'interieur des tags html |
|
| 320 | + if (preg_match_all(_TYPO_BALISE, $letexte, $regs, PREG_SET_ORDER)) { |
|
| 321 | + foreach ($regs as $reg) { |
|
| 322 | + $insert = $reg[0]; |
|
| 323 | + // hack: on transforme les caracteres a proteger en les remplacant |
|
| 324 | + // par des caracteres "illegaux". (cf corriger_caracteres()) |
|
| 325 | + $insert = strtr($insert, _TYPO_PROTEGER, _TYPO_PROTECTEUR); |
|
| 326 | + $letexte = str_replace($reg[0], $insert, $letexte); |
|
| 327 | + } |
|
| 328 | + } |
|
| 329 | + |
|
| 330 | + // trouver les blocs idiomes et les traiter à part |
|
| 331 | + $letexte = extraire_idiome($ei = $letexte, $lang, true); |
|
| 332 | + $ei = ($ei !== $letexte); |
|
| 333 | + |
|
| 334 | + // trouver les blocs multi et les traiter a part |
|
| 335 | + $letexte = extraire_multi($em = $letexte, $lang, true); |
|
| 336 | + $em = ($em !== $letexte); |
|
| 337 | + |
|
| 338 | + // Charger & appliquer les fonctions de typographie |
|
| 339 | + $typographie = charger_fonction(lang_typo($lang), 'typographie'); |
|
| 340 | + $letexte = $typographie($letexte); |
|
| 341 | + |
|
| 342 | + // Les citations en une autre langue, s'il y a lieu |
|
| 343 | + if ($em) { |
|
| 344 | + $letexte = echappe_retour($letexte, 'multi'); |
|
| 345 | + } |
|
| 346 | + if ($ei) { |
|
| 347 | + $letexte = echappe_retour($letexte, 'idiome'); |
|
| 348 | + } |
|
| 349 | + |
|
| 350 | + // Retablir les caracteres proteges |
|
| 351 | + $letexte = strtr($letexte, _TYPO_PROTECTEUR, _TYPO_PROTEGER); |
|
| 352 | + |
|
| 353 | + // pipeline |
|
| 354 | + $letexte = pipeline('post_typo', $letexte); |
|
| 355 | + |
|
| 356 | + # un message pour abs_url - on est passe en mode texte |
|
| 357 | + $GLOBALS['mode_abs_url'] = 'texte'; |
|
| 358 | + |
|
| 359 | + return $letexte; |
|
| 360 | 360 | } |
| 361 | 361 | |
| 362 | 362 | |
@@ -372,7 +372,7 @@ discard block |
||
| 372 | 372 | * @return string |
| 373 | 373 | */ |
| 374 | 374 | function paragrapher($letexte, $forcer = true) { |
| 375 | - return $letexte; |
|
| 375 | + return $letexte; |
|
| 376 | 376 | } |
| 377 | 377 | |
| 378 | 378 | /** |
@@ -384,11 +384,11 @@ discard block |
||
| 384 | 384 | * @return string texte |
| 385 | 385 | **/ |
| 386 | 386 | function traiter_retours_chariots($letexte) { |
| 387 | - $letexte = preg_replace(",\r\n?,S", "\n", $letexte); |
|
| 388 | - $letexte = preg_replace(',<p[>[:space:]],iS', "\n\n\\0", $letexte); |
|
| 389 | - $letexte = preg_replace(',</p[>[:space:]],iS', "\\0\n\n", $letexte); |
|
| 387 | + $letexte = preg_replace(",\r\n?,S", "\n", $letexte); |
|
| 388 | + $letexte = preg_replace(',<p[>[:space:]],iS', "\n\n\\0", $letexte); |
|
| 389 | + $letexte = preg_replace(',</p[>[:space:]],iS', "\\0\n\n", $letexte); |
|
| 390 | 390 | |
| 391 | - return $letexte; |
|
| 391 | + return $letexte; |
|
| 392 | 392 | } |
| 393 | 393 | |
| 394 | 394 | |
@@ -414,41 +414,41 @@ discard block |
||
| 414 | 414 | * texte transformé |
| 415 | 415 | **/ |
| 416 | 416 | function propre($t, $connect = null, $env = []) { |
| 417 | - // les appels directs a cette fonction depuis le php de l'espace |
|
| 418 | - // prive etant historiquement ecrits sans argment $connect |
|
| 419 | - // on utilise la presence de celui-ci pour distinguer les cas |
|
| 420 | - // ou il faut passer interdire_script explicitement |
|
| 421 | - // les appels dans les squelettes (de l'espace prive) fournissant un $connect |
|
| 422 | - // ne seront pas perturbes |
|
| 423 | - // FIXME: Trouver une solution pour avoir un type (string) unique sur $connect. |
|
| 424 | - $interdire_script = false; |
|
| 425 | - if (is_null($connect)) { |
|
| 426 | - $connect = ''; |
|
| 427 | - $interdire_script = true; |
|
| 428 | - $env['espace_prive'] = true; |
|
| 429 | - } |
|
| 430 | - |
|
| 431 | - if (!$t) { |
|
| 432 | - return strval($t); |
|
| 433 | - } |
|
| 434 | - |
|
| 435 | - // Dans l'espace prive on se mefie de tout contenu dangereux |
|
| 436 | - // avant echappement des balises <html> |
|
| 437 | - // https://core.spip.net/issues/3371 |
|
| 438 | - // et aussi dans l'espace public si la globale filtrer_javascript = -1 |
|
| 439 | - // https://core.spip.net/issues/4166 |
|
| 440 | - if ( |
|
| 441 | - $interdire_script |
|
| 442 | - or $GLOBALS['filtrer_javascript'] == -1 |
|
| 443 | - or (!empty($env['espace_prive']) and $GLOBALS['filtrer_javascript'] <= 0) |
|
| 444 | - or (!empty($env['wysiwyg']) and $env['wysiwyg'] and $GLOBALS['filtrer_javascript'] <= 0) |
|
| 445 | - ) { |
|
| 446 | - $t = echapper_html_suspect($t, ['strict' => false], $connect, $env); |
|
| 447 | - } |
|
| 448 | - $t = echappe_html($t); |
|
| 449 | - $t = expanser_liens($t, $connect ?? '', $env); |
|
| 450 | - $t = traiter_raccourcis($t); |
|
| 451 | - $t = echappe_retour_modeles($t, $interdire_script); |
|
| 452 | - |
|
| 453 | - return $t; |
|
| 417 | + // les appels directs a cette fonction depuis le php de l'espace |
|
| 418 | + // prive etant historiquement ecrits sans argment $connect |
|
| 419 | + // on utilise la presence de celui-ci pour distinguer les cas |
|
| 420 | + // ou il faut passer interdire_script explicitement |
|
| 421 | + // les appels dans les squelettes (de l'espace prive) fournissant un $connect |
|
| 422 | + // ne seront pas perturbes |
|
| 423 | + // FIXME: Trouver une solution pour avoir un type (string) unique sur $connect. |
|
| 424 | + $interdire_script = false; |
|
| 425 | + if (is_null($connect)) { |
|
| 426 | + $connect = ''; |
|
| 427 | + $interdire_script = true; |
|
| 428 | + $env['espace_prive'] = true; |
|
| 429 | + } |
|
| 430 | + |
|
| 431 | + if (!$t) { |
|
| 432 | + return strval($t); |
|
| 433 | + } |
|
| 434 | + |
|
| 435 | + // Dans l'espace prive on se mefie de tout contenu dangereux |
|
| 436 | + // avant echappement des balises <html> |
|
| 437 | + // https://core.spip.net/issues/3371 |
|
| 438 | + // et aussi dans l'espace public si la globale filtrer_javascript = -1 |
|
| 439 | + // https://core.spip.net/issues/4166 |
|
| 440 | + if ( |
|
| 441 | + $interdire_script |
|
| 442 | + or $GLOBALS['filtrer_javascript'] == -1 |
|
| 443 | + or (!empty($env['espace_prive']) and $GLOBALS['filtrer_javascript'] <= 0) |
|
| 444 | + or (!empty($env['wysiwyg']) and $env['wysiwyg'] and $GLOBALS['filtrer_javascript'] <= 0) |
|
| 445 | + ) { |
|
| 446 | + $t = echapper_html_suspect($t, ['strict' => false], $connect, $env); |
|
| 447 | + } |
|
| 448 | + $t = echappe_html($t); |
|
| 449 | + $t = expanser_liens($t, $connect ?? '', $env); |
|
| 450 | + $t = traiter_raccourcis($t); |
|
| 451 | + $t = echappe_retour_modeles($t, $interdire_script); |
|
| 452 | + |
|
| 453 | + return $t; |
|
| 454 | 454 | } |