Compare commits

..

25 Commits

Author SHA1 Message Date
1887d42a78 Merge pull request #58 from cypherbits/new-encryption
New generation AES256-GCM encryption by libsodium. PHP >= 7.2 needed
2020-05-02 18:32:50 +02:00
95fd504249 Merge pull request #60 from cypherbits/header_security
Add more security headers
2020-05-02 18:28:44 +02:00
c728d6d447 Merge pull request #59 from cypherbits/link_privacy
Add chat link privacy with noreferrer and noopener
2020-05-02 18:27:57 +02:00
95c1faf1d9 Correctly calculate frameset hight for non-upload enabled users 2020-05-02 18:23:35 +02:00
c5e55e8bc0 add more security headers 2020-05-02 18:11:35 +02:00
1cdf6cbf55 add chat link privacy with noreferrer and noopener 2020-05-02 17:25:09 +02:00
7adf9732ef fix... 2020-05-02 13:53:17 +02:00
f0659466c1 openssl to libsodium 2020-05-02 13:30:29 +02:00
0963acafcf New generation AES256-GCM encryption by libsodium. PHP >= 7.3 needed. 2020-05-02 12:16:36 +02:00
d58fdeee8b Added example CSS that moves the chatters list to the right 2020-04-12 12:45:39 +02:00
e0d6fe5d91 Merge pull request #57 from infoabcd/master
Full Chinese translation
2020-04-11 11:21:38 +02:00
f605137313 Add files via upload 2020-04-11 08:09:12 +08:00
03f9a86515 Allow making file upload member-only and added required tag to captcha input 2020-02-29 14:26:48 +01:00
cfd54b09be Add filtermodkick setting to db if missing 2019-02-24 13:17:01 +01:00
16b81337b1 Merge pull request #52 from virtualghetto/filtermodkick-fix
fix filtermodkick setting
2019-02-24 13:08:47 +01:00
2cd5d18511 Merge pull request #50 from virtualghetto/next-gen-hotlink
Next-Gen Onion Hotlink
2019-02-24 13:02:41 +01:00
0ae827450a Merge pull request #51 from virtualghetto/restore-enc-notes
Restore encrypted notes
2019-02-24 12:59:47 +01:00
5589999b0f fix filtermodkick setting
filtermodkick should be defined in the settings array instead of reg.
2019-02-16 18:42:56 +00:00
4d0b828879 Restore encrypted notes
send_backup() decrypts the notes if MSGENCRYPTED is enabled.
So, re-encrypt the notes on restore.
2019-02-03 15:45:18 +00:00
268328f82c Next-Gen Onion Hotlink 2018-11-07 15:50:51 +00:00
a63901fc76 Fix php notice + update copyright year 2018-04-22 15:02:09 +02:00
36a8727d2f Added Czech translation 2018-04-15 12:30:36 +02:00
5cfe783649 Better check whether messaging is really allowed when validating new messages 2017-10-05 20:40:26 +02:00
d832cf64ec Added Ukrainian and updated Russian translation 2017-09-11 19:45:02 +02:00
7002e3fbad Added Italian translation 2017-09-10 17:17:01 +02:00
17 changed files with 1831 additions and 701 deletions

View File

@ -1,4 +1,17 @@
Version 1.23.6 - Sep. 1, 2017 Allow making file upload member-only
Added required tag to captcha input
Version 1.23.7 - Feb. 24, 2019
Support V3 hidden services
Fixed filtermodkick setting
fixed restore_backup not encrypting notes
Version 1.23.6 - Apr. 22, 2018
Added Czech, Italian and Ukrainian translation
Updated Russian translation
Bugfixes
Version 1.23.5 - Sep. 1, 2017
Added Russian and Bulgarian translation Added Russian and Bulgarian translation
Updated Spanish translation Updated Spanish translation
Bugfixes and optimizations Bugfixes and optimizations

2
README
View File

@ -42,7 +42,7 @@ Optionally, you can install:
- the json extension for save/restore - the json extension for save/restore
- a memcached server and the memcached extension and change the configuaration to use memcached. This will lessen the database load a bit. - a memcached server and the memcached extension and change the configuaration to use memcached. This will lessen the database load a bit.
- a MySQL or PostgreSQL server to use as an external database instead of SQLite - a MySQL or PostgreSQL server to use as an external database instead of SQLite
- the openssl extension for encryption of messages and notes in the database - the libsodium extension for encryption of messages and notes in the database (bundled with PHP >= 7.2)
When you have everything installed and use MySQL or PostgreSQL, you'll have to create a database and a user for the chat. When you have everything installed and use MySQL or PostgreSQL, you'll have to create a database and a user for the chat.
Then edit the configuration at the bottom of the script to reflect the appropriate database settings and to modify the chat settings the way you like them. Then edit the configuration at the bottom of the script to reflect the appropriate database settings and to modify the chat settings the way you like them.
Then copy the script to your web-server directory and call the script in your browser with a parameter like this: Then copy the script to your web-server directory and call the script in your browser with a parameter like this:

View File

@ -45,7 +45,7 @@ Optionally, you can install:
- the json extension for save/restore - the json extension for save/restore
- a memcached server and the memcached extension and change the configuaration to use memcached. This will lessen the database load a bit. - a memcached server and the memcached extension and change the configuaration to use memcached. This will lessen the database load a bit.
- a MySQL or PostgreSQL server to use as an external database instead of SQLite - a MySQL or PostgreSQL server to use as an external database instead of SQLite
- the openssl extension for encryption of messages and notes in the database - the libsodium extension (PHP >= 7.2) for encryption of messages and notes in the database
When you have everything installed and use MySQL or PostgreSQL, you'll have to create a database and a user for the chat. When you have everything installed and use MySQL or PostgreSQL, you'll have to create a database and a user for the chat.
Then edit the configuration at the bottom of the script to reflect the appropriate database settings and to modify the chat settings the way you like them. Then edit the configuration at the bottom of the script to reflect the appropriate database settings and to modify the chat settings the way you like them.
Then copy the script to your web-server directory and call the script in your browser with a parameter like this: Then copy the script to your web-server directory and call the script in your browser with a parameter like this:

107
chat.php
View File

@ -2,7 +2,7 @@
/* /*
* LE CHAT-PHP - a PHP Chat based on LE CHAT - Main program * LE CHAT-PHP - a PHP Chat based on LE CHAT - Main program
* *
* Copyright (C) 2015-2017 Daniel Winzen <d@winzen4.de> * Copyright (C) 2015-2018 Daniel Winzen <d@winzen4.de>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -222,10 +222,10 @@ function route_setup(){
if(!valid_admin()){ if(!valid_admin()){
send_alogin(); send_alogin();
} }
$C['bool_settings']=['suguests', 'imgembed', 'timestamps', 'trackip', 'memkick', 'forceredirect', 'incognito', 'sendmail', 'modfallback', 'disablepm', 'eninbox', 'enablegreeting', 'sortupdown', 'hidechatters', 'enfileupload', 'personalnotes', 'filtermodkick']; $C['bool_settings']=['suguests', 'imgembed', 'timestamps', 'trackip', 'memkick', 'forceredirect', 'incognito', 'sendmail', 'modfallback', 'disablepm', 'eninbox', 'enablegreeting', 'sortupdown', 'hidechatters', 'personalnotes', 'filtermodkick'];
$C['colour_settings']=['colbg', 'coltxt']; $C['colour_settings']=['colbg', 'coltxt'];
$C['msg_settings']=['msgenter', 'msgexit', 'msgmemreg', 'msgsureg', 'msgkick', 'msgmultikick', 'msgallkick', 'msgclean', 'msgsendall', 'msgsendmem', 'msgsendmod', 'msgsendadm', 'msgsendprv', 'msgattache']; $C['msg_settings']=['msgenter', 'msgexit', 'msgmemreg', 'msgsureg', 'msgkick', 'msgmultikick', 'msgallkick', 'msgclean', 'msgsendall', 'msgsendmem', 'msgsendmod', 'msgsendadm', 'msgsendprv', 'msgattache'];
$C['number_settings']=['memberexpire', 'guestexpire', 'kickpenalty', 'entrywait', 'captchatime', 'messageexpire', 'messagelimit', 'maxmessage', 'maxname', 'minpass', 'defaultrefresh', 'numnotes', 'maxuploadsize']; $C['number_settings']=['memberexpire', 'guestexpire', 'kickpenalty', 'entrywait', 'captchatime', 'messageexpire', 'messagelimit', 'maxmessage', 'maxname', 'minpass', 'defaultrefresh', 'numnotes', 'maxuploadsize', 'enfileupload'];
$C['textarea_settings']=['rulestxt', 'css', 'disabletext']; $C['textarea_settings']=['rulestxt', 'css', 'disabletext'];
$C['text_settings']=['dateformat', 'captchachars', 'redirect', 'chatname', 'mailsender', 'mailreceiver', 'nickregex', 'passregex', 'externalcss']; $C['text_settings']=['dateformat', 'captchachars', 'redirect', 'chatname', 'mailsender', 'mailreceiver', 'nickregex', 'passregex', 'externalcss'];
$C['settings']=array_merge(['guestaccess', 'englobalpass', 'globalpass', 'captcha', 'dismemcaptcha', 'topic', 'guestreg', 'defaulttz'], $C['bool_settings'], $C['colour_settings'], $C['msg_settings'], $C['number_settings'], $C['textarea_settings'], $C['text_settings']); // All settings in the database $C['settings']=array_merge(['guestaccess', 'englobalpass', 'globalpass', 'captcha', 'dismemcaptcha', 'topic', 'guestreg', 'defaulttz'], $C['bool_settings'], $C['colour_settings'], $C['msg_settings'], $C['number_settings'], $C['textarea_settings'], $C['text_settings']); // All settings in the database
@ -499,7 +499,7 @@ function send_captcha(){
imagegif($im); imagegif($im);
imagedestroy($im); imagedestroy($im);
echo base64_encode(ob_get_clean()).'">'; echo base64_encode(ob_get_clean()).'">';
echo '</td><td>'.hidden('challenge', $randid).'<input type="text" name="captcha" size="15" autocomplete="off"></td></tr>'; echo '</td><td>'.hidden('challenge', $randid).'<input type="text" name="captcha" size="15" autocomplete="off" required></td></tr>';
} }
function send_setup($C){ function send_setup($C){
@ -767,6 +767,9 @@ function restore_backup($C){
}elseif($note['type']==='staff'){ }elseif($note['type']==='staff'){
$note['type']=1; $note['type']=1;
} }
if(MSGENCRYPTED){
$note['text']=base64_encode(sodium_crypto_aead_aes256gcm_encrypt($note['text'], '', AES_IV, ENCRYPTKEY));
}
$stmt->execute([$note['type'], $note['lastedited'], $note['editedby'], $note['text']]); $stmt->execute([$note['type'], $note['lastedited'], $note['editedby'], $note['text']]);
} }
} }
@ -801,7 +804,7 @@ function send_backup($C){
$result=$db->query('SELECT * FROM ' . PREFIX . "notes;"); $result=$db->query('SELECT * FROM ' . PREFIX . "notes;");
while($note=$result->fetch(PDO::FETCH_ASSOC)){ while($note=$result->fetch(PDO::FETCH_ASSOC)){
if(MSGENCRYPTED){ if(MSGENCRYPTED){
$note['text']=openssl_decrypt($note['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456'); $note['text']=sodium_crypto_aead_aes256gcm_decrypt(base64_decode($note['text']), null, AES_IV, ENCRYPTKEY);
} }
$code['notes'][]=$note; $code['notes'][]=$note;
} }
@ -1412,7 +1415,7 @@ function send_frameset(){
}else{ }else{
$bottom=''; $bottom='';
} }
if(($U['status']>=5 || ($U['status']>2 && get_count_mods()==0)) && get_setting('enfileupload')){ if(($U['status']>=5 || ($U['status']>2 && get_count_mods()==0)) && get_setting('enfileupload')>0 && get_setting('enfileupload')<=$U['status']){
$postheight=120; $postheight=120;
}else{ }else{
$postheight=100; $postheight=100;
@ -1536,7 +1539,7 @@ function send_notes($type){
} }
if(isset($_REQUEST['text'])){ if(isset($_REQUEST['text'])){
if(MSGENCRYPTED){ if(MSGENCRYPTED){
$_REQUEST['text']=openssl_encrypt($_REQUEST['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456'); $_REQUEST['text']=base64_encode(sodium_crypto_aead_aes256gcm_encrypt($_REQUEST['text'], '', AES_IV, ENCRYPTKEY));
} }
$time=time(); $time=time();
$stmt=$db->prepare('INSERT INTO ' . PREFIX . 'notes (type, lastedited, editedby, text) VALUES (?, ?, ?, ?);'); $stmt=$db->prepare('INSERT INTO ' . PREFIX . 'notes (type, lastedited, editedby, text) VALUES (?, ?, ?, ?);');
@ -1570,7 +1573,7 @@ function send_notes($type){
$note['text']=''; $note['text']='';
} }
if(MSGENCRYPTED){ if(MSGENCRYPTED){
$note['text']=openssl_decrypt($note['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456'); $note['text']=sodium_crypto_aead_aes256gcm_decrypt(base64_decode($note['text']), null, AES_IV, ENCRYPTKEY);
} }
echo "</p>".form('notes'); echo "</p>".form('notes');
echo "$hiddendo<textarea name=\"text\">".htmlspecialchars($note['text']).'</textarea><br>'; echo "$hiddendo<textarea name=\"text\">".htmlspecialchars($note['text']).'</textarea><br>';
@ -1763,7 +1766,7 @@ function send_post($rejected=''){
} }
} }
echo '</select></td>'; echo '</select></td>';
if(get_setting('enfileupload')){ if(get_setting('enfileupload')>0 && get_setting('enfileupload')<=$U['status']){
if(!$disablepm && ($U['status']>=5 || ($U['status']>=3 && get_count_mods()==0 && get_setting('memkick')))){ if(!$disablepm && ($U['status']>=5 || ($U['status']>=3 && get_count_mods()==0 && get_setting('memkick')))){
echo '</tr></table><table><tr id="secondline">'; echo '</tr></table><table><tr id="secondline">';
} }
@ -2194,7 +2197,7 @@ function create_session($setup, $nickname, $password){
$U['entry']=$U['lastpost']=time(); $U['entry']=$U['lastpost']=time();
}else{ }else{
add_user_defaults($password); add_user_defaults($password);
check_captcha($_REQUEST['challenge'], $_REQUEST['captcha']); check_captcha(isset($_REQUEST['challenge']) ? $_REQUEST['challenge'] : '', isset($_REQUEST['captcha']) ? $_REQUEST['captcha'] : '');
$ga=(int) get_setting('guestaccess'); $ga=(int) get_setting('guestaccess');
if(!valid_nick($U['nickname'])){ if(!valid_nick($U['nickname'])){
send_error(sprintf($I['invalnick'], get_setting('maxname'), get_setting('nickregex'))); send_error(sprintf($I['invalnick'], get_setting('maxname'), get_setting('nickregex')));
@ -2499,7 +2502,7 @@ function check_member($password){
$stmt->execute([$U['nickname']]); $stmt->execute([$U['nickname']]);
if($temp=$stmt->fetch(PDO::FETCH_ASSOC)){ if($temp=$stmt->fetch(PDO::FETCH_ASSOC)){
if(get_setting('dismemcaptcha')==0){ if(get_setting('dismemcaptcha')==0){
check_captcha($_REQUEST['challenge'], $_REQUEST['captcha']); check_captcha(isset($_REQUEST['challenge']) ? $_REQUEST['challenge'] : '', isset($_REQUEST['captcha']) ? $_REQUEST['captcha'] : '');
} }
if($temp['passhash']===md5(sha1(md5($U['nickname'].$password)))){ if($temp['passhash']===md5(sha1(md5($U['nickname'].$password)))){
// old hashing method, update on the fly // old hashing method, update on the fly
@ -2873,24 +2876,33 @@ function validate_input(){
}elseif($_REQUEST['sendto']==='s &' && $U['status']>=6){ }elseif($_REQUEST['sendto']==='s &' && $U['status']>=6){
$poststatus=6; $poststatus=6;
$displaysend=sprintf(get_setting('msgsendadm'), style_this(htmlspecialchars($U['nickname']), $U['style'])); $displaysend=sprintf(get_setting('msgsendadm'), style_this(htmlspecialchars($U['nickname']), $U['style']));
}else{// known nick in room? }else{ // known nick in room?
if(get_setting('disablepm')){ if(get_setting('disablepm')){
//PMs disabled
return; return;
} }
$stmt=$db->prepare('SELECT * FROM (SELECT nickname, style, 1 AS inbox FROM ' . PREFIX . 'members WHERE nickname=? AND eninbox!=0 AND eninbox<=? AND nickname NOT IN (SELECT nickname FROM ' . PREFIX . 'sessions) UNION SELECT nickname, style, 0 AS inbox FROM ' . PREFIX . 'sessions WHERE nickname=?) AS t WHERE nickname NOT IN (SELECT ign FROM ' . PREFIX . 'ignored WHERE ignby=? UNION SELECT ignby FROM ' . PREFIX . 'ignored WHERE ign=?);'); $stmt=$db->prepare('SELECT null FROM ' . PREFIX . 'ignored WHERE (ignby=? AND ign=?) OR (ign=? AND ignby=?);');
$stmt->execute([$_REQUEST['sendto'], $U['status'], $_REQUEST['sendto'], $U['nickname'], $U['nickname']]); $stmt->execute([$_REQUEST['sendto'], $U['nickname'], $_REQUEST['sendto'], $U['nickname']]);
if($tmp=$stmt->fetch(PDO::FETCH_ASSOC)){ if($stmt->fetch(PDO::FETCH_NUM)){
//ignored
return;
}
$tmp=false;
$stmt=$db->prepare('SELECT s.style, 0 AS inbox FROM ' . PREFIX . 'sessions AS s LEFT JOIN ' . PREFIX . 'members AS m ON (m.nickname=s.nickname) WHERE s.nickname=? AND (s.incognito=0 OR (m.eninbox!=0 AND m.eninbox<=?));');
$stmt->execute([$_REQUEST['sendto'], $U['status']]);
if(!$tmp=$stmt->fetch(PDO::FETCH_ASSOC)){
$stmt=$db->prepare('SELECT style, 1 AS inbox FROM ' . PREFIX . 'members WHERE nickname=? AND eninbox!=0 AND eninbox<=?;');
$stmt->execute([$_REQUEST['sendto'], $U['status']]);
if(!$tmp=$stmt->fetch(PDO::FETCH_ASSOC)){
//nickname left or disabled offline inbox for us
return;
}
}
$recipient=$_REQUEST['sendto']; $recipient=$_REQUEST['sendto'];
$poststatus=9; $poststatus=9;
$displaysend=sprintf(get_setting('msgsendprv'), style_this(htmlspecialchars($U['nickname']), $U['style']), style_this(htmlspecialchars($recipient), $tmp['style'])); $displaysend=sprintf(get_setting('msgsendprv'), style_this(htmlspecialchars($U['nickname']), $U['style']), style_this(htmlspecialchars($recipient), $tmp['style']));
$inbox=$tmp['inbox']; $inbox=$tmp['inbox'];
} }
if(empty($recipient)){// nick left already or ignores us
$message='';
$rejected='';
return;
}
}
if($poststatus!==9 && preg_match('~^/me~iu', $message)){ if($poststatus!==9 && preg_match('~^/me~iu', $message)){
$displaysend=style_this(htmlspecialchars("$U[nickname] "), $U['style']); $displaysend=style_this(htmlspecialchars("$U[nickname] "), $U['style']);
$message=preg_replace("~^/me\s?~iu", '', $message); $message=preg_replace("~^/me\s?~iu", '', $message);
@ -2898,7 +2910,7 @@ function validate_input(){
$message=apply_filter($message, $poststatus, $U['nickname']); $message=apply_filter($message, $poststatus, $U['nickname']);
$message=create_hotlinks($message); $message=create_hotlinks($message);
$message=apply_linkfilter($message); $message=apply_linkfilter($message);
if(isset($_FILES['file']) && get_setting('enfileupload')){ if(isset($_FILES['file']) && get_setting('enfileupload')>0 && get_setting('enfileupload')<=$U['status']){
if($_FILES['file']['error']===UPLOAD_ERR_OK && $_FILES['file']['size']<=(1024*get_setting('maxuploadsize'))){ if($_FILES['file']['error']===UPLOAD_ERR_OK && $_FILES['file']['size']<=(1024*get_setting('maxuploadsize'))){
$hash=sha1_file($_FILES['file']['tmp_name']); $hash=sha1_file($_FILES['file']['tmp_name']);
$name=htmlspecialchars($_FILES['file']['name']); $name=htmlspecialchars($_FILES['file']['name']);
@ -2920,7 +2932,7 @@ function validate_input(){
'text' =>"<span class=\"usermsg\">$displaysend".style_this($message, $U['style']).'</span>' 'text' =>"<span class=\"usermsg\">$displaysend".style_this($message, $U['style']).'</span>'
]; ];
if(MSGENCRYPTED){ if(MSGENCRYPTED){
$newmessage['text']=openssl_encrypt($newmessage['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456'); $newmessage['text']=base64_encode(sodium_crypto_aead_aes256gcm_encrypt($newmessage['text'], '', AES_IV, ENCRYPTKEY));
} }
$stmt=$db->prepare('INSERT INTO ' . PREFIX . 'inbox (postdate, postid, poster, recipient, text) VALUES(?, ?, ?, ?, ?)'); $stmt=$db->prepare('INSERT INTO ' . PREFIX . 'inbox (postdate, postid, poster, recipient, text) VALUES(?, ?, ?, ?, ?)');
$stmt->execute([$newmessage['postdate'], $id[0], $newmessage['poster'], $newmessage['recipient'], $newmessage['text']]); $stmt->execute([$newmessage['postdate'], $id[0], $newmessage['poster'], $newmessage['recipient'], $newmessage['text']]);
@ -3012,15 +3024,15 @@ function create_hotlinks($message){
$message=preg_replace('~((?:[^\s<>]*:[^\s<>]*@)?[a-z0-9\-]+(?:\.[a-z0-9\-]+)+:\d+)(?![^<>]*>)~iu', "<<$1>>", $message); // server:port given $message=preg_replace('~((?:[^\s<>]*:[^\s<>]*@)?[a-z0-9\-]+(?:\.[a-z0-9\-]+)+:\d+)(?![^<>]*>)~iu', "<<$1>>", $message); // server:port given
$message=preg_replace('~([^\s<>]*:[^\s<>]*@[a-z0-9\-]+(?:\.[a-z0-9\-]+)+(?::\d+)?)(?![^<>]*>)~iu', "<<$1>>", $message); // au:th@server given $message=preg_replace('~([^\s<>]*:[^\s<>]*@[a-z0-9\-]+(?:\.[a-z0-9\-]+)+(?::\d+)?)(?![^<>]*>)~iu', "<<$1>>", $message); // au:th@server given
// 3. likely servers without any hints but not filenames like *.rar zip exe etc. // 3. likely servers without any hints but not filenames like *.rar zip exe etc.
$message=preg_replace('~((?:[a-z0-9\-]+\.)*[a-z2-7]{16}\.onion)(?![^<>]*>)~iu', "<<$1>>", $message);// *.onion $message=preg_replace('~((?:[a-z0-9\-]+\.)*(?:[a-z2-7]{55}d|[a-z2-7]{16})\.onion)(?![^<>]*>)~iu', "<<$1>>", $message);// *.onion
$message=preg_replace('~([a-z0-9\-]+(?:\.[a-z0-9\-]+)+(?:\.(?!rar|zip|exe|gz|7z|bat|doc)[a-z]{2,}))(?=[^a-z0-9\-\.]|$)(?![^<>]*>)~iu', "<<$1>>", $message);// xxx.yyy.zzz $message=preg_replace('~([a-z0-9\-]+(?:\.[a-z0-9\-]+)+(?:\.(?!rar|zip|exe|gz|7z|bat|doc)[a-z]{2,}))(?=[^a-z0-9\-\.]|$)(?![^<>]*>)~iu', "<<$1>>", $message);// xxx.yyy.zzz
// Convert every <<....>> into proper links: // Convert every <<....>> into proper links:
$message=preg_replace_callback('/<<([^<>]+)>>/u', $message=preg_replace_callback('/<<([^<>]+)>>/u',
function ($matches){ function ($matches){
if(strpos($matches[1], '://')===false){ if(strpos($matches[1], '://')===false){
return "<a href=\"http://$matches[1]\" target=\"_blank\">$matches[1]</a>"; return "<a href=\"http://$matches[1]\" target=\"_blank\" rel=\"noreferrer noopener\">$matches[1]</a>";
}else{ }else{
return "<a href=\"$matches[1]\" target=\"_blank\">$matches[1]</a>"; return "<a href=\"$matches[1]\" target=\"_blank\" rel=\"noreferrer noopener\">$matches[1]</a>";
} }
} }
, $message); , $message);
@ -3108,7 +3120,7 @@ function add_system_message($mes){
function write_message($message){ function write_message($message){
global $db; global $db;
if(MSGENCRYPTED){ if(MSGENCRYPTED){
$message['text']=openssl_encrypt($message['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456'); $message['text']=base64_encode(sodium_crypto_aead_aes256gcm_encrypt($message['text'], '', AES_IV, ENCRYPTKEY));
} }
$stmt=$db->prepare('INSERT INTO ' . PREFIX . 'messages (postdate, poststatus, poster, recipient, text, delstatus) VALUES (?, ?, ?, ?, ?, ?);'); $stmt=$db->prepare('INSERT INTO ' . PREFIX . 'messages (postdate, poststatus, poster, recipient, text, delstatus) VALUES (?, ?, ?, ?, ?, ?);');
$stmt->execute([$message['postdate'], $message['poststatus'], $message['poster'], $message['recipient'], $message['text'], $message['delstatus']]); $stmt->execute([$message['postdate'], $message['poststatus'], $message['poster'], $message['recipient'], $message['text'], $message['delstatus']]);
@ -3229,7 +3241,7 @@ function print_messages($delstatus=0){
function prepare_message_print(&$message, $removeEmbed){ function prepare_message_print(&$message, $removeEmbed){
if(MSGENCRYPTED){ if(MSGENCRYPTED){
$message['text']=openssl_decrypt($message['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456'); $message['text']=sodium_crypto_aead_aes256gcm_decrypt(base64_decode($message['text']), null, AES_IV, ENCRYPTKEY);
} }
if($removeEmbed){ if($removeEmbed){
$message['text']=preg_replace_callback('/<img src="([^"]+)"><\/a>/u', $message['text']=preg_replace_callback('/<img src="([^"]+)"><\/a>/u',
@ -3249,6 +3261,9 @@ function send_headers(){
header('Expires: 0'); header('Expires: 0');
header('Referrer-Policy: no-referrer'); header('Referrer-Policy: no-referrer');
header('Content-Security-Policy: referrer never'); header('Content-Security-Policy: referrer never');
header('X-Content-Type-Options: nosniff');
header('X-Frame-Options: sameorigin');
header('X-XSS-Protection: 1; mode=block');
if($_SERVER['REQUEST_METHOD']==='HEAD'){ if($_SERVER['REQUEST_METHOD']==='HEAD'){
exit; // headers sent, no further processing needed exit; // headers sent, no further processing needed
} }
@ -3628,6 +3643,7 @@ function init_chat(){
['maxuploadsize', '1024'], ['maxuploadsize', '1024'],
['nextcron', '0'], ['nextcron', '0'],
['personalnotes', '1'], ['personalnotes', '1'],
['filtermodkick', '0'],
]; ];
$stmt=$db->prepare('INSERT INTO ' . PREFIX . 'settings (setting, value) VALUES (?, ?);'); $stmt=$db->prepare('INSERT INTO ' . PREFIX . 'settings (setting, value) VALUES (?, ?);');
foreach($settings as $pair){ foreach($settings as $pair){
@ -3649,7 +3665,6 @@ function init_chat(){
'eninbox' =>0, 'eninbox' =>0,
'sortupdown' =>0, 'sortupdown' =>0,
'hidechatters' =>0, 'hidechatters' =>0,
'filtermodkick' =>1,
]; ];
$stmt=$db->prepare('INSERT INTO ' . PREFIX . 'members (nickname, passhash, status, refresh, bgcolour, timestamps, style, embed, incognito, nocache, tz, eninbox, sortupdown, hidechatters, nocache_old) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);'); $stmt=$db->prepare('INSERT INTO ' . PREFIX . 'members (nickname, passhash, status, refresh, bgcolour, timestamps, style, embed, incognito, nocache, tz, eninbox, sortupdown, hidechatters, nocache_old) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);');
$stmt->execute([$reg['nickname'], $reg['passhash'], $reg['status'], $reg['refresh'], $reg['bgcolour'], $reg['timestamps'], $reg['style'], $reg['embed'], $reg['incognito'], $reg['nocache'], $reg['tz'], $reg['eninbox'], $reg['sortupdown'], $reg['hidechatters'], $reg['nocache_old']]); $stmt->execute([$reg['nickname'], $reg['passhash'], $reg['status'], $reg['refresh'], $reg['bgcolour'], $reg['timestamps'], $reg['style'], $reg['embed'], $reg['incognito'], $reg['nocache'], $reg['tz'], $reg['eninbox'], $reg['sortupdown'], $reg['hidechatters'], $reg['nocache_old']]);
@ -3956,9 +3971,6 @@ function update_db(){
$db->exec('CREATE INDEX ' . PREFIX . 'notes_type ON ' . PREFIX . 'notes(type);'); $db->exec('CREATE INDEX ' . PREFIX . 'notes_type ON ' . PREFIX . 'notes(type);');
$db->exec('CREATE INDEX ' . PREFIX . 'notes_editedby ON ' . PREFIX . 'notes(editedby);'); $db->exec('CREATE INDEX ' . PREFIX . 'notes_editedby ON ' . PREFIX . 'notes(editedby);');
} }
if($dbversion<40){
$db->exec('INSERT INTO ' . PREFIX . "settings (setting, value) VALUES ('filtermodkick', '1');");
}
if($dbversion<41){ if($dbversion<41){
$db->exec('DROP TABLE ' . PREFIX . 'sessions;'); $db->exec('DROP TABLE ' . PREFIX . 'sessions;');
$db->exec('CREATE TABLE ' . PREFIX . "sessions (id $primary, session char(32) NOT NULL UNIQUE, nickname varchar(50) NOT NULL UNIQUE, status smallint NOT NULL, refresh smallint NOT NULL, style varchar(255) NOT NULL, lastpost integer NOT NULL, passhash varchar(255) NOT NULL, postid char(6) NOT NULL DEFAULT '000000', useragent varchar(255) NOT NULL, kickmessage varchar(255) DEFAULT '', bgcolour char(6) NOT NULL, entry integer NOT NULL, timestamps smallint NOT NULL, embed smallint NOT NULL, incognito smallint NOT NULL, ip varchar(45) NOT NULL, nocache smallint NOT NULL, tz varchar(255) NOT NULL, eninbox smallint NOT NULL, sortupdown smallint NOT NULL, hidechatters smallint NOT NULL, nocache_old smallint NOT NULL)$memengine$charset;"); $db->exec('CREATE TABLE ' . PREFIX . "sessions (id $primary, session char(32) NOT NULL UNIQUE, nickname varchar(50) NOT NULL UNIQUE, status smallint NOT NULL, refresh smallint NOT NULL, style varchar(255) NOT NULL, lastpost integer NOT NULL, passhash varchar(255) NOT NULL, postid char(6) NOT NULL DEFAULT '000000', useragent varchar(255) NOT NULL, kickmessage varchar(255) DEFAULT '', bgcolour char(6) NOT NULL, entry integer NOT NULL, timestamps smallint NOT NULL, embed smallint NOT NULL, incognito smallint NOT NULL, ip varchar(45) NOT NULL, nocache smallint NOT NULL, tz varchar(255) NOT NULL, eninbox smallint NOT NULL, sortupdown smallint NOT NULL, hidechatters smallint NOT NULL, nocache_old smallint NOT NULL)$memengine$charset;");
@ -3985,18 +3997,21 @@ function update_db(){
$db->exec('CREATE INDEX ' . PREFIX . 'inbox_recipient ON ' . PREFIX . 'inbox(recipient);'); $db->exec('CREATE INDEX ' . PREFIX . 'inbox_recipient ON ' . PREFIX . 'inbox(recipient);');
$db->exec('ALTER TABLE ' . PREFIX . 'inbox ADD FOREIGN KEY (recipient) REFERENCES ' . PREFIX . 'members(nickname) ON DELETE CASCADE ON UPDATE CASCADE;'); $db->exec('ALTER TABLE ' . PREFIX . 'inbox ADD FOREIGN KEY (recipient) REFERENCES ' . PREFIX . 'members(nickname) ON DELETE CASCADE ON UPDATE CASCADE;');
} }
if($dbversion<42){
$db->exec('INSERT IGNORE INTO ' . PREFIX . "settings (setting, value) VALUES ('filtermodkick', '1');");
}
update_setting('dbversion', DBVERSION); update_setting('dbversion', DBVERSION);
if($msgencrypted!==MSGENCRYPTED){ if($msgencrypted!==MSGENCRYPTED){
if(!extension_loaded('openssl')){ if(!extension_loaded('sodium')){
send_fatal_error($I['opensslextrequired']); send_fatal_error($I['sodiumextrequired']);
} }
$result=$db->query('SELECT id, text FROM ' . PREFIX . 'messages;'); $result=$db->query('SELECT id, text FROM ' . PREFIX . 'messages;');
$stmt=$db->prepare('UPDATE ' . PREFIX . 'messages SET text=? WHERE id=?;'); $stmt=$db->prepare('UPDATE ' . PREFIX . 'messages SET text=? WHERE id=?;');
while($message=$result->fetch(PDO::FETCH_ASSOC)){ while($message=$result->fetch(PDO::FETCH_ASSOC)){
if(MSGENCRYPTED){ if(MSGENCRYPTED){
$message['text']=openssl_encrypt($message['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456'); $message['text']=base64_encode(sodium_crypto_aead_aes256gcm_encrypt($message['text'], '', AES_IV, ENCRYPTKEY));
}else{ }else{
$message['text']=openssl_decrypt($message['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456'); $message['text']=sodium_crypto_aead_aes256gcm_decrypt(base64_decode($message['text']), null, AES_IV, ENCRYPTKEY);
} }
$stmt->execute([$message['text'], $message['id']]); $stmt->execute([$message['text'], $message['id']]);
} }
@ -4004,9 +4019,9 @@ function update_db(){
$stmt=$db->prepare('UPDATE ' . PREFIX . 'notes SET text=? WHERE id=?;'); $stmt=$db->prepare('UPDATE ' . PREFIX . 'notes SET text=? WHERE id=?;');
while($message=$result->fetch(PDO::FETCH_ASSOC)){ while($message=$result->fetch(PDO::FETCH_ASSOC)){
if(MSGENCRYPTED){ if(MSGENCRYPTED){
$message['text']=openssl_encrypt($message['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456'); $message['text']=base64_encode(sodium_crypto_aead_aes256gcm_encrypt($message['text'], '', AES_IV, ENCRYPTKEY));
}else{ }else{
$message['text']=openssl_decrypt($message['text'], 'aes-256-cbc', ENCRYPTKEY, 0, '1234567890123456'); $message['text']=sodium_crypto_aead_aes256gcm_decrypt(base64_decode($message['text']), null, AES_IV, ENCRYPTKEY);
} }
$stmt->execute([$message['text'], $message['id']]); $stmt->execute([$message['text'], $message['id']]);
} }
@ -4131,12 +4146,15 @@ function load_lang(){
global $I, $L, $language; global $I, $L, $language;
$L=[ $L=[
'bg' =>'Български', 'bg' =>'Български',
'cz' =>'čeština',
'de' =>'Deutsch', 'de' =>'Deutsch',
'en' =>'English', 'en' =>'English',
'es' =>'Español', 'es' =>'Español',
'fr' =>'Français', 'fr' =>'Français',
'id' =>'Bahasa Indonesia', 'id' =>'Bahasa Indonesia',
'it' =>'Italiano',
'ru' =>'Русский', 'ru' =>'Русский',
'uk' =>'Українська',
'zh_CN' =>'简体中文', 'zh_CN' =>'简体中文',
]; ];
if(isset($_REQUEST['lang']) && isset($L[$_REQUEST['lang']])){ if(isset($_REQUEST['lang']) && isset($L[$_REQUEST['lang']])){
@ -4162,10 +4180,11 @@ function load_lang(){
function load_config(){ function load_config(){
mb_internal_encoding('UTF-8'); mb_internal_encoding('UTF-8');
define('VERSION', '1.23.5'); // Script version define('VERSION', '1.24'); // Script version
define('DBVERSION', 41); // Database layout version define('DBVERSION', 42); // Database layout version
define('MSGENCRYPTED', false); // Store messages encrypted in the database to prevent other database users from reading them - true/false - visit the setup page after editing! define('MSGENCRYPTED', false); // Store messages encrypted in the database to prevent other database users from reading them - true/false - visit the setup page after editing!
define('ENCRYPTKEY', 'MY_KEY'); // Encryption key for messages define('ENCRYPTKEY_PASS', 'MY_SECRET_KEY'); // Encryption key for messages
define('AES_IV_PASS', '1234567890123456'); //AES Encryption IV
define('DBHOST', 'localhost'); // Database host define('DBHOST', 'localhost'); // Database host
define('DBUSER', 'www-data'); // Database user define('DBUSER', 'www-data'); // Database user
define('DBPASS', 'YOUR_DB_PASS'); // Database password define('DBPASS', 'YOUR_DB_PASS'); // Database password
@ -4183,5 +4202,9 @@ function load_config(){
} }
define('COOKIENAME', PREFIX . 'chat_session'); // Cookie name storing the session information define('COOKIENAME', PREFIX . 'chat_session'); // Cookie name storing the session information
define('LANG', 'en'); // Default language define('LANG', 'en'); // Default language
if (MSGENCRYPTED){
//Do not touch: Compute real keys needed by encryption functions
define('ENCRYPTKEY', substr(hash("sha512/256",ENCRYPTKEY_PASS),0, SODIUM_CRYPTO_AEAD_AES256GCM_KEYBYTES));
define('AES_IV', substr(hash("sha512/256",AES_IV_PASS), 0, SODIUM_CRYPTO_AEAD_AES256GCM_NPUBBYTES));
}
} }

View File

@ -0,0 +1,8 @@
.msg {padding: 0.5em 0; border-bottom: 1px solid #363636}
input, select, textarea, button {padding: 0.2em; border: 1px solid #ffffff; border-radius: 0.5em}
#messages small {color: #989898}
#messages {display: block; width: 79%}
.messages #topic {display: block; width: 79%}
.messages #chatters {display: block; float:right; width: 20%; overflow-y: auto; position:fixed; right:0px; max-height:100%; bottom:2em; top:2em;}
.messages #chatters td, #chatters tr, #chatters th {display: table-row; width: 100%!important;}
.messages #chatters table a {display: table-row; line-height: 0;}

View File

@ -2,7 +2,7 @@
/* /*
* LE CHAT-PHP - a PHP Chat based on LE CHAT - Bulgarian translation * LE CHAT-PHP - a PHP Chat based on LE CHAT - Bulgarian translation
* *
* Copyright (C) 2015-2017 Daniel Winzen <d@winzen4.de> * Copyright (C) 2015-2018 Daniel Winzen <d@winzen4.de>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -310,7 +310,7 @@ $T=[
'nopass' => 'Невалидна парола (поне %d символа), не променям ника', 'nopass' => 'Невалидна парола (поне %d символа), не променям ника',
'gdextrequired' => 'Добавката gd за PHP е необходима за тази функционалност. Моля, първо я инсталирайте.', 'gdextrequired' => 'Добавката gd за PHP е необходима за тази функционалност. Моля, първо я инсталирайте.',
'memcachedextrequired' => 'Добавката memcached за PHP е необходима за кеш функционалностите. Моля, първо я инсталирайте или върнете настройките за memcached обратно на false.', 'memcachedextrequired' => 'Добавката memcached за PHP е необходима за кеш функционалностите. Моля, първо я инсталирайте или върнете настройките за memcached обратно на false.',
'opensslextrequired' => 'Добавката openssl за PHP е необходима the криптиращата функционалност. Моля, първо я инсталирайте или върнете настройките за криптиране обратно на false.', 'sodiumextrequired' => 'Добавката libsodium за PHP е необходима the криптиращата функционалност. Моля, първо я инсталирайте или върнете настройките за криптиране обратно на false.',
'pdo_mysqlextrequired' => 'Добавката pdo_mysql за PHP е необходима за избрания драйвер за базата данни. Моля, първо я инсталирайте.', 'pdo_mysqlextrequired' => 'Добавката pdo_mysql за PHP е необходима за избрания драйвер за базата данни. Моля, първо я инсталирайте.',
'pdo_pgsqlextrequired' => 'Добавката pdo_pgsql за PHP е необходима за избрания драйвер за базата данни. Моля, първо я инсталирайте.', 'pdo_pgsqlextrequired' => 'Добавката pdo_pgsql за PHP е необходима за избрания драйвер за базата данни. Моля, първо я инсталирайте.',
'pdo_sqliteextrequired' => 'Добавката pdo_sqlite за PHP е необходима за избрния драйвер за базата данни. Моля, първо я инсталирайте.', 'pdo_sqliteextrequired' => 'Добавката pdo_sqlite за PHP е необходима за избрния драйвер за базата данни. Моля, първо я инсталирайте.',

368
lang_cz.php Normal file
View File

@ -0,0 +1,368 @@
<?php
/*
* LE CHAT-PHP - a PHP Chat based on LE CHAT - Czech translation
*
* Copyright (C) 2015-2018 Daniel Winzen <d@winzen4.de>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
//Native language name: čeština
$I=[
'nodb' => 'Chyba databáze!',
'nodbsetup' => 'Žádné připojení k databázi, prosím vytvořte databázi a upravte script pro použití správné databáze se zadaným uživatelským jménem a heslem!',
'changelang' => 'Změnit jazyk:',
'expire' => 'Neplatná/relace vypršela',
'kicked' => 'Byl jsi vyhozen!',
'invalnick' => 'Neplatná přezdívka (%1$d znaků maximální a musí odpovídat regulární výraz "%2$s")',
'invalpass' => 'Neplatné heslo (Alespoň %1$d znaků a musí odpovídat regulární výraz "%2$s")',
'noconfirm' => 'Hesla se neshodují!',
'incorregex' => 'Nesprávný regulární výraz!',
'bottom' => 'Dolní',
'top' => 'Horní',
'choose' => '(vybrat)',
'setup' => 'Nastavení Chatu',
'init' => 'Počáteční nastavení',
'sulogin' => 'Superadmin Přihlášení',
'sunick' => 'Superadmin Přezdívka:',
'supass' => 'Superadmin Heslo:',
'suconfirm' => 'Potvrzení hesla:',
'susuccess' => 'Byl jsi úspěšně zaregistrován!',
'initbtn' => 'Inicializace chatu',
'initdbexist' => 'Databázové tabulky již existují! Chcete-li pokračovat, musíte tyto tabulky nejprve ručně odstranit.',
'initsuexist' => 'Superadmin již existuje!',
'initgosetup' => 'Přejděte na stránku nastavení',
'captcha' => 'Captcha',
'enabled' => 'Povoleno',
'onlyguests' => 'Pouze pro hosty',
'disabled' => 'Zakázáno',
'simple' => 'Jednoduchý',
'moderate' => 'Moderate',
'extreme' => 'Extrémní',
'nick' => 'Přezdívka:',
'pass' => 'Heslo:',
'globalloginpass' => 'Globální heslo:',
'login' => 'Přihlásit se',
'dbupdate' => 'Databáze byla úspěšně aktualizována!',
'sysmessages' => 'Systémové zprávy',
'msgenter' => 'Vstup',
'msgexit' => 'Odchod',
'msgmemreg' => 'Registrovaný člen',
'msgsureg' => 'Žadatel se zaregistroval',
'msgkick' => 'Vyhozen',
'msgmultikick' => 'Vyhozeno více členů',
'msgallkick' => 'Všichni byli vyhozeni',
'msgclean' => 'Místnost byla vyčištěna',
'dateformat' => '<a target="_blank" href="http://php.net/manual/en/function.date.php#refsect1-function.date-parameters">Formát datumu</a>',
'admfunc' => 'Administrativní funkce',
'allguests' => 'Všichni hosté',
'cleanmsgs' => 'Vyčistit zprávy',
'room' => 'Celá místnost',
'selection' => 'Výběr',
'cleannick' => 'Následující přezdívka:',
'clean' => 'Vyčistit',
'kickchat' => 'Vyhodit chatujícího (%d minutes)',
'kickreason' => 'Důvod vyhození:',
'kickpurge' => 'Vyčistit zprávy',
'kick' => 'Vyhodit',
'logoutinact' => 'Odhlásit neaktivní chatující',
'logout' => 'Odhlásit',
'sessions' => 'Zobrazit aktivní relace',
'view' => 'Zobrazit',
'filter' => 'Filtr',
'guestacc' => 'Změnit přístup pro hosty',
'guestallow' => 'Povolit',
'guestwait' => 'Povolit s čekající možností',
'adminallow' => 'Požadovat schválení moderátorem',
'guestdisallow' => 'Jen členové',
'addsuguest' => 'Zaregistrovat žadatele',
'register' => 'Registrovat',
'admmembers' => 'Členové',
'memdel' => 'Odstranit z databáze',
'memdeny' => 'Zamítnout přístup (!)',
'memsuguest' => 'Nastavit na žadatele (G)',
'memreg' => 'Nastavte na řádného člena',
'memmod' => 'Nastavit na moderátory (M)',
'memsumod' => 'Nastavit na supermod (SM)',
'memadm' => 'Nastavit pro Administrátory (A)',
'change' => 'Změnit',
'regguest' => 'Registrovat hosta',
'regmem' => 'Registrovat nového Člena',
'sessact' => 'Aktivní relace',
'sessnick' => 'Přezdívka',
'sesstimeout' => 'Časový limit (Timeout) v',
'sessua' => 'User-Agent',
'fid' => 'ID filtru:',
'match' => 'Match',
'replace' => 'Nahradit',
'allowpm' => 'Povolit v PM',
'regex' => 'Regex',
'apply' => 'Použít',
'newfilter' => 'Nový filtr:',
'add' => 'Přidat',
'noframes' => 'Tento chat používá <b> rámeček </ b>. Povolte rámečky ve vašem prohlížeči nebo použijte jiný!',
'delselmes' => 'Odstranit vybrané zprávy',
'staffnotes' => 'Poznámky zaměstnanců',
'adminnotes' => 'Poznámky Administrátorů',
'notessaved' => 'Poznámky uloženy!',
'lastedited' => 'Naposledy upraveno %1$s at %2$s',
'savenotes' => 'Uložit poznámky',
'waitingroom' => 'Čekárna',
'waittext' => 'Vítejte %1$s, vaše přihlášení bylo odloženo, přístup k chatu je možný v %2$d sekundách.',
'admwaittext' => 'Vítejte %1$s, vaše přihlašovací údaje byly odloženy, můžete k chatu přistupovat až to moderátor dovolí.',
'waitreload' => 'Pokud se tato stránka neobnoví každých %d sekund, použijte tlačítko níže, abyste ji znovu načítali ručně!',
'reload' => 'Znovu načíst',
'rules' => 'Pravidla',
'talkto' => 'Mluvit s',
'toall' => 'Všem',
'tomem' => 'Jen členové',
'tostaff' => 'Jen zaměstnanci',
'toadmin' => 'Jen administrátoři',
'alsopurge' => 'Také vyčistit zprávy',
'dellast' => 'Vymazat poslední zprávu',
'delall' => 'Vymazat všechny zprávy',
'switchsingle' => 'Přepnout na jednorázovou linku',
'switchmulti' => 'Přepnout na víceřádkový',
'help' => 'Pomoc',
'helpguest' => 'Všechny funkce by měly být docela samo vysvětlující, stačí použít tlačítka. Ve vašem profilu můžete nastavit obnovovací frekvenci a barvu písma a ignorovat uživatele. <br> <u>Poznámka:</u> Jedná se o chat, takže pokud nebudete mluvit, budete automaticky po chvíli odhlášeni.',
'helpembed' => 'Pokud chcete vložit obrázek do příspěvku, jednoduše jej vložte [img] před vaší adresou URL obrázku. Například: [img]http://example.com/images/file.jpg vloží obrázek do příspěvku.',
'helpmem' => 'Členové: Ve svém profilu budete mít další možnosti. Můžete nastavit tvar písma, změnit heslo kdykoli a samozřejmě můžete svůj účet smazat.',
'helpmod' => 'Moderátoři: Uvidíte správce v dolní části. Zobrazí se stránka, ve které můžete čistit místnost, vyhodit cahtující, prohlížet všechny aktivní relace a v případě potřeby úplně zakázat přístup pro hosty.',
'helpadm' => 'Administrátoři: Budete dále moci registrovat hosty, editovat členy a registrovat nové přezdívky.',
'profile' => 'Váš profil',
'ignore' => 'Ignorovat',
'unignore' => 'Již neignorovat',
'refreshrate' => 'Obnovovací frekvence (5-150 sekund)',
'fontcolour' => 'Barva písma',
'viewexample' => 'Zobrazit příklady',
'bgcolour' => 'Barva pozadí',
'fontface' => 'Tvar písma',
'roomdefault' => 'Výchozí místnost',
'bold' => 'Tučně',
'italic' => 'Kurzíva',
'small' => 'Malý',
'fontexample' => 'Příklad vybraného písma',
'timestamps' => 'Zobrazit časové značky',
'embed' => 'Embed obzrázky',
'incognito' => 'Režim inkognito',
'changenick' => 'Změnit přezdívku',
'changepass' => 'Změnit heslo',
'oldpass' => 'Staré heslo:',
'newpass' => 'Nové heslo:',
'confirmpass' => 'Potvrdit nové heslo:',
'savechanges' => 'Uložit',
'reloadpb' => 'Znovu načíst poštovní schránku',
'reloadmsgs' => 'Znovu načíst zprávy',
'chgprofile' => 'Profil',
'adminbtn' => 'Admin',
'admnotes' => 'Admin poznámky',
'notes' => 'Poznámky',
'clone' => 'Klonovat',
'randh' => 'Pravidla & Pomoc',
'exit' => 'Opustit chat',
'bye' => 'Sbohem %s, navštivte nás brzy!',
'colourtable' => 'Barevný',
'backtoprofile' => 'Zpět do profilu',
'copy' => 'Kopírovat:',
'choosecol' => 'Hosté, vyberte barvu:',
'randomcol' => 'Náhodná barva',
'enter' => 'Vstoupit',
'error' => 'Chyba',
'members' => 'Členové',
'guests' => 'Hosté',
'approveguests' => '%d noví hsté ke schválení',
'allowchecked' => 'Povolit vybrané',
'allowall' => 'Povolit vše',
'denychecked' => 'Zakázat vybrané',
'denyall' => 'Zakázat vše',
'denymessage' => 'Poslat zprávu odepřeným:',
'butallowdeny' => 'Odeslat',
'waitempty' => 'Žádná další žádost o schválení',
'wrongcaptcha' => 'Špatná Captcha',
'captchaexpire' => 'Captcha byla již použitá nebo vypršel čas',
'noguests' => 'Omlouváme se, v současné době pouze členové!',
'curchat' => 'Právě teď %d chatujících v místnosti:',
'cantreg' => 'Nelze zaregistrovat %s',
'alreadyreged' => '%s je již zaregistrovaný.',
'successreg' => '%s byl úspěšně zaregistrován..',
'cantchgstat' => 'Nelze změnit status uživatele %s',
'succdel' => '%s byl úspěšně vymazán z databáze.',
'succchg' => 'Status %s byl úspěšně změněn.',
'wrongpass' => 'Špatné heslo!',
'wrongglobalpass' => 'Špatné globální heslo!',
'succprofile' => 'Váš profil byl úspěšně uložen.',
'backtologin' => 'Zpět na přihlašovací stránku.',
'backtochat' => 'Zpět do chatu.',
'Beige' => 'Béžový',
'Black' => 'Černý',
'Blue' => 'Modrý',
'BlueViolet' => 'Modro-fialová',
'Brown' => 'Hnědá',
'Cyan' => 'Tyrkysová',
'DarkBlue' => 'Tmavě modrá',
'DarkGreen' => 'Tmavě zelená',
'DarkRed' => 'Tmavě červená',
'DarkViolet' => 'Tmavě fialová',
'DeepSkyBlue' => 'Modré nebe',
'Gold' => 'Zlatá',
'Grey' => 'Šedá',
'Green' => 'Zelená',
'HotPink' => 'Hot růžová',
'Indigo' => 'Indigo',
'LightBlue' => 'Světle modrá',
'LightGreen' => 'Světle zelená',
'LimeGreen' => 'Limetkově zelená',
'Magenta' => 'Purpurová',
'Olive' => 'Olivová',
'Orange' => 'Oranžová',
'OrangeRed' => 'oranžově-červená',
'Purple' => 'Purpurová',
'Red' => 'Červená',
'RoyalBlue' => 'Královsky modrá',
'SeaGreen' => 'Zelené moře',
'Sienna' => 'Oranžově žlutá',
'Silver' => 'Stříbrný',
'Tan' => 'Bronz',
'Teal' => 'Teal',
'Violet' => 'Fialová',
'White' => 'Bílá',
'Yellow' => 'Žlutá',
'YellowGreen' => 'Žluto zelená',
'redirectto' => 'Přesměrování na:',
'nonhttp' => 'Požadovaný odkaz bez http:',
'httpredir' => 'Pokud to nefunguje, zkuste tohle:',
'actions' => 'Akce',
'sesip' => 'IP-Addresa',
'css' => 'CSS Styl',
'memberexpire' => 'Členský časový limit (minut)',
'guestexpire' => 'Host timeout (minut)',
'kickpenalty' => 'Kick penalty (minut)',
'entrywait' => 'Čas čekací místnosti (sekund)',
'captchatime' => 'Časový limit Captcha (sekund)',
'messageexpire' => 'Časový limit zprávy (minut)',
'messagelimit' => 'Limit zprávy (veřejnost)',
'maxmessage' => 'Maximální délka zprávy',
'confirm' => 'Jsi si jistý?',
'yes' => 'Ano',
'no' => 'Ne',
'colbg' => 'Barva pozadí',
'coltxt' => 'Barva textu',
'maxname' => 'Maximální délka přezdívky',
'minpass' => 'Minimální délka hesla',
'defaultrefresh' => 'Výchozí doba načtení zprávy (reload) (sekund)',
'suguests' => 'Povolit žadatele',
'rulestxt' => 'Pravidla (html)',
'imgembed' => 'Obrázky v rámečku (embed)',
'trackip' => 'Zobrazit IP relace',
'captchachars' => 'Znaky použité v Captcha',
'memkick' => 'Členové mohou vyhazovat, pokud není přítomen žádný moderátor',
'forceredirect' => 'Vynucené přesměrování',
'redirect' => 'Vlastní skript přesměrování',
'backuprestore' => 'Zálohování a obnovení',
'backup' => 'Zalohování',
'restore' => 'Obnovení',
'settings' => 'Nastavení',
'linkfilter' => 'Filtr odkazů',
'chatname' => 'Název chatu',
'destroy' => 'Zničit chat',
'destroyed' => 'Chat byl úspěšně zničen',
'topic' => 'Téma',
'passreset' => 'Reset hesla',
'cantresetpass' => 'Nelze resetovat heslo',
'succpassreset' => 'Heslo bylo úspěšně resetováno',
'entermsg' => '%s vstoupil do chatu.',
'exitmsg' => '%s opustil chat.',
'memregmsg' => '%s se stal registrovaným členem.',
'suregmsg' => '%s je nyní registrovaným žadatelem.',
'kickmsg' => '%s byl vyhozen.',
'multikickmsg' => '%s byli vyhozeni..',
'allkickmsg' => 'Všichni hosté byli vyhozeni.',
'cleanmsg' => '%s byl vyčištěn.',
'sendallmsg' => '%s - ',
'sendmemmsg' => '[M] %s - ',
'sendmodmsg' => '[Personál] %s - ',
'sendadmmsg' => '[Administrátor] %s - ',
'sendprvmsg' => '[%1$s do %2$s] - ',
'msgsendall' => 'Zpráva všem',
'msgsendmem' => 'Zpráva jen pro členy',
'msgsendmod' => 'Zpráva jen pro personál',
'msgsendadm' => 'Zpráva jen Administrátorům',
'msgsendprv' => 'Soukromá zpráva',
'numnotes' => 'Počet poznámek, které je nutné zachovat',
'revisions' => 'Revize:',
'older' => 'Starší',
'newer' => 'Novější',
'accessdenied' => 'Přístup zamítnut',
'loggedinas' => 'Jste přihlášeni jako %s a nemáte přístup k této části.',
'newnickname' => 'Nová přezdívka:',
'nicknametaken' => 'Přezdívku již někdo používá',
'nopass' => 'Chybné heslo (Nejméně %d znaků), přezdívka zůstala stejná',
'gdextrequired' => 'Rozšíření PHP gd je pro tuto funkci vyžadováno. Nejprve ho nainstalujte.',
'memcachedextrequired' => 'Pro funkci ukládání do mezipaměti je vyžadováno memcached rozšíření PHP. Nejprve ho nainstalujte, nebo nastavte parametr memcached na hodnotu false.',
'sodiumextrequired' => 'Pro funkci šifrování je vyžadováno rozšíření PHP libsodium. Nejprve ho nainstalujte nebo nastavte šifrované nastavení zpět na hodnotu false.',
'pdo_mysqlextrequired' => 'Rozšíření pdo_mysql PHP je vyžadováno pro zvolený ovladač databáze. Nejprve ho nainstalujte.',
'pdo_pgsqlextrequired' => 'Pro zvolený databázový ovladač je vyžadováno rozšíření PHP pdo_pgsql. Nejprve ho nainstalujte.',
'pdo_sqliteextrequired' => 'Rozšíření pdo_sqlite PHP je vyžadováno pro zvolený ovladač databáze. Nejprve ho nainstalujte.',
'jsonextrequired' => 'Pro tuto funkci je vyžadováno rozšíření PHP json. Nejprve ho nainstalujte.',
'sendmail' => 'Odeslat mail na novou veřejnou zprávu',
'mailsender' => 'Odeslat mail pomocí této adresy',
'mailreceiver' => 'Odeslat mail do této adresy',
'modfallback' => 'Zpět do čekaí místnosti, pokud není přítomen žádný moderátor, který schvaluje hosty',
'regpass' => 'Zopakujte heslo<br>pro registraci',
'guestreg' => 'Nechte hosty zaregistrovat se',
'asmember' => 'Jako členové',
'assuguest' => 'Jako žadatel',
'fatalerror' => 'Fatal error',
'prevmatch' => 'Vaše hledání bylo následující',
'matchtoolong' => 'Vaše hledání bylo příliš dlouhé. Můžete použít max. 255 znaků. Zkuste to rozdělit.',
'nocache' => 'Automatické procházení (pro staré prohlížeče nebo třídění od nejvyššího dole).',
'disablepm' => 'Zakázat soukromé zprávy',
'disablechat' => 'Vypnout chat',
'disabletext' => 'Deaktivovat zprávu v chatu (html)',
'disabledtext' => 'Dočasně zakázáno',
'defaulttz' => 'Výchozí časové pásmo',
'tz' => 'Časové pásmo',
'optional' => '(volitelný)',
'userloggedin' => 'Uživatel s touto přezdívkou je již přihlášen.',
'regednick' => 'Tato přezdívka používá registrovaný člen.',
'eninbox' => 'Povolit offline doručenou poštu ',
'inboxmsgs' => 'Přečtěte si %d zprávy ve vaší doručené poště',
'offline' => '(offline)',
'deleteacc' => 'Odstranit účet',
'eninnone' => 'Pro nikoho',
'eninall' => 'Pro všechny',
'eninmem' => 'Jen pro členy',
'eninstaff' => 'Jen pro personál',
'eninadmin' => 'Jen pro Administrátory',
'nickregex' => 'Přezdívka regex',
'passregex' => 'Heslo regex',
'externalcss' => 'Link pro externí CSS soubor',
'greetingmsg' => 'Vítej %s!',
'entryhelp' => 'Pokud tento snímek není znovu načten v% d sekundách, bude muset v prohlížeči povolit automatické přesměrování (meta refresh). Také se ujistěte, že žádný webový filtr, místní proxy nástroj nebo plugin pro prohlížeč nebrání automatickému obnovení! Mohlo by to být například "Polipo", "NoScript" atd.<br>Jako řešení (nebo v případě chyby načtení serveru / serveru proxy) můžete ručně obnovit tlačítka v dolní části.',
'enablegreeting' => 'Před zobrazením zpráv zobrazte uvítací zprávu',
'unban' => 'Odbanovat',
'sortupdown' => 'Seřadit zprávy shora dolů',
'sortframe' => 'Změňit uspořádání',
'cs' => 'Velká a malá písmena',
'hidechatters' => 'Skrýt seznam chatujících',
'enfileupload' => 'Povolit nahrávání souborů',
'msgattache' => 'Příloha',
'filenotfound' => 'Soubor nebyl nalezen!',
'maxuploadsize' => 'Maximální velikost nahrávaných souborů v KB',
'maxsize' => 'Max. %d KB',
'cssupdate' => 'Poznámka: Výchozí CSS je nyní napevno a může být odstraněn z nastavení CSS',
'manualrefresh' => 'Nutná ruční aktualizace ',
'personalnotes' => 'Osobní poznámky',
'filtermodkick' => 'Použít vyhazovací filtr na moderátory',
];

View File

@ -2,7 +2,7 @@
/* /*
* LE CHAT-PHP - a PHP Chat based on LE CHAT - German translation * LE CHAT-PHP - a PHP Chat based on LE CHAT - German translation
* *
* Copyright (C) 2015-2017 Daniel Winzen <d@winzen4.de> * Copyright (C) 2015-2018 Daniel Winzen <d@winzen4.de>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -310,7 +310,7 @@ $T=[
'nopass' => 'Ungültiges Passwort (Mindestens %d Zeichen), Nickname nicht geändert', 'nopass' => 'Ungültiges Passwort (Mindestens %d Zeichen), Nickname nicht geändert',
'gdextrequired' => 'Für diese Funktion wird die gd Erweiterung von PHP benötigt. Bitte installieren Sie diese zuerst.', 'gdextrequired' => 'Für diese Funktion wird die gd Erweiterung von PHP benötigt. Bitte installieren Sie diese zuerst.',
'memcachedextrequired' => 'Die memcached Erweiterung von PHP wird benötigt, um die Cache-Funktion zu benutzen. Bitte installieren Sie diese zuerst oder setzen Sie die memcached Einstellung zurück auf false.', 'memcachedextrequired' => 'Die memcached Erweiterung von PHP wird benötigt, um die Cache-Funktion zu benutzen. Bitte installieren Sie diese zuerst oder setzen Sie die memcached Einstellung zurück auf false.',
'opensslextrequired' => 'Die openssl Erweiterung von PHP wird benötigt, um die Verschlüsselungs-Funktion zu benutzen. Bitte installieren Sie diese zuerst oder setzen Sie die encrypted Einstellung zurück auf false.', 'sodiumextrequired' => 'Die libsodium Erweiterung von PHP wird benötigt, um die Verschlüsselungs-Funktion zu benutzen. Bitte installieren Sie diese zuerst oder setzen Sie die encrypted Einstellung zurück auf false.',
'pdo_mysqlextrequired' => 'Die pdo_mysql Erweiterung von PHP wird für den ausgewählten Datenbanktreiber benötigt. Bitte installieren Sie diese zuerst.', 'pdo_mysqlextrequired' => 'Die pdo_mysql Erweiterung von PHP wird für den ausgewählten Datenbanktreiber benötigt. Bitte installieren Sie diese zuerst.',
'pdo_pgsqlextrequired' => 'Die pdo_pgsql Erweiterung von PHP wird für den ausgewählten Datenbanktreiber benötigt. Bitte installieren Sie diese zuerst.', 'pdo_pgsqlextrequired' => 'Die pdo_pgsql Erweiterung von PHP wird für den ausgewählten Datenbanktreiber benötigt. Bitte installieren Sie diese zuerst.',
'pdo_sqliteextrequired' => 'Die pdo_sqlite Erweiterung von PHP wird für den ausgewählten Datenbanktreiber benötigt. Bitte installieren Sie diese zuerst.', 'pdo_sqliteextrequired' => 'Die pdo_sqlite Erweiterung von PHP wird für den ausgewählten Datenbanktreiber benötigt. Bitte installieren Sie diese zuerst.',

View File

@ -2,7 +2,7 @@
/* /*
* LE CHAT-PHP - a PHP Chat based on LE CHAT - English translation * LE CHAT-PHP - a PHP Chat based on LE CHAT - English translation
* *
* Copyright (C) 2015-2017 Daniel Winzen <d@winzen4.de> * Copyright (C) 2015-2018 Daniel Winzen <d@winzen4.de>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -310,7 +310,7 @@ $I=[
'nopass' => 'Invalid password (At least %d characters), not changing nickname', 'nopass' => 'Invalid password (At least %d characters), not changing nickname',
'gdextrequired' => 'The gd extension of PHP is required for this feature. Please install it first.', 'gdextrequired' => 'The gd extension of PHP is required for this feature. Please install it first.',
'memcachedextrequired' => 'The memcached extension of PHP is required for the caching feature. Please install it first or set the memcached setting back to false.', 'memcachedextrequired' => 'The memcached extension of PHP is required for the caching feature. Please install it first or set the memcached setting back to false.',
'opensslextrequired' => 'The openssl extension of PHP is required for the encryption feature. Please install it first or set the encrypted setting back to false.', 'sodiumextrequired' => 'The libsodium extension of PHP is required for the encryption feature. Please install it first or set the encrypted setting back to false.',
'pdo_mysqlextrequired' => 'The pdo_mysql extension of PHP is required for the selected database driver. Please install it first.', 'pdo_mysqlextrequired' => 'The pdo_mysql extension of PHP is required for the selected database driver. Please install it first.',
'pdo_pgsqlextrequired' => 'The pdo_pgsql extension of PHP is required for the selected database driver. Please install it first.', 'pdo_pgsqlextrequired' => 'The pdo_pgsql extension of PHP is required for the selected database driver. Please install it first.',
'pdo_sqliteextrequired' => 'The pdo_sqlite extension of PHP is required for the selected database driver. Please install it first.', 'pdo_sqliteextrequired' => 'The pdo_sqlite extension of PHP is required for the selected database driver. Please install it first.',

View File

@ -2,7 +2,7 @@
/* /*
* LE CHAT-PHP - a PHP Chat based on LE CHAT - Spanish translation * LE CHAT-PHP - a PHP Chat based on LE CHAT - Spanish translation
* *
* Copyright (C) 2015-2017 Daniel Winzen <d@winzen4.de> * Copyright (C) 2015-2018 Daniel Winzen <d@winzen4.de>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -310,7 +310,7 @@ $T=[
'nopass' => 'Constraseña incorrecta (al menos %d caracteres), no se cambia apodo', 'nopass' => 'Constraseña incorrecta (al menos %d caracteres), no se cambia apodo',
'gdextrequired' => 'La extensión gd de PHP es requerida para esto. Instálela primero.', 'gdextrequired' => 'La extensión gd de PHP es requerida para esto. Instálela primero.',
'memcachedextrequired' => 'La extensión memcached de PHP es requerida para esto. Instalela primero o configure memcached en false.', 'memcachedextrequired' => 'La extensión memcached de PHP es requerida para esto. Instalela primero o configure memcached en false.',
'opensslextrequired' => 'La extensión openssl de PHP es necesaria para la encriptación. Instálela o configure la encriptación en false.', 'sodiumextrequired' => 'La extensión libsodium de PHP es necesaria para la encriptación. Instálela o configure la encriptación en false.',
'pdo_mysqlextrequired' => 'La extensión pdo_mysql de PHP es necesaria para la database driver seleccionada. Instálelo primero.', 'pdo_mysqlextrequired' => 'La extensión pdo_mysql de PHP es necesaria para la database driver seleccionada. Instálelo primero.',
'pdo_pgsqlextrequired' => ' La extensión pdo_pgsql de PHP es necesaria para la database driver seleccionada. Instálelo primero.', 'pdo_pgsqlextrequired' => ' La extensión pdo_pgsql de PHP es necesaria para la database driver seleccionada. Instálelo primero.',
'pdo_sqliteextrequired' => ' La extensión pdo_sqlite de PHP es necesaria para la database driver seleccionada. Instálelo primero.', 'pdo_sqliteextrequired' => ' La extensión pdo_sqlite de PHP es necesaria para la database driver seleccionada. Instálelo primero.',

View File

@ -2,7 +2,7 @@
/* /*
* LE CHAT-PHP - a PHP Chat based on LE CHAT - French translation * LE CHAT-PHP - a PHP Chat based on LE CHAT - French translation
* *
* Copyright (C) 2015-2017 Daniel Winzen <d@winzen4.de> * Copyright (C) 2015-2018 Daniel Winzen <d@winzen4.de>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@ -2,7 +2,7 @@
/* /*
* LE CHAT-PHP - a PHP Chat based on LE CHAT - Indonesian translation * LE CHAT-PHP - a PHP Chat based on LE CHAT - Indonesian translation
* *
* Copyright (C) 2015-2017 Daniel Winzen <d@winzen4.de> * Copyright (C) 2015-2018 Daniel Winzen <d@winzen4.de>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

368
lang_it.php Normal file
View File

@ -0,0 +1,368 @@
<?php
/*
* LE CHAT-PHP - a PHP Chat based on LE CHAT - Italian translation
*
* Copyright (C) 2015-2018 Daniel Winzen <d@winzen4.de>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
//Native language name: Italiano
$T=[
'nodb' => 'Non cè collegamento al database!',
'nodbsetup' => 'Non cè collegamento con database, perfavore crea il database ed edita lo scipt, per utilizzare database giusto con utente e password creati',
'changelang' => 'Cambia lingua:',
'expire' => 'Sessione invalida',
'kicked' => 'Bannato!',
'invalnick' => 'Nome sbagliato (%1$d simboli al massimo e deve coincidere con il testo"%2$s")',
'invalpass' => 'Password sbagliata (Almeno %1$d simboli e deve coincidere con il testo "%2$s")',
'noconfirm' => 'Password inserite non coincidono!',
'incorregex' => 'Testo non corretto',
'bottom' => 'Giù',
'top' => 'Su',
'choose' => '(sclegli)',
'setup' => 'Impostare chat',
'init' => 'Impostazioni iniziali',
'sulogin' => 'Entrata per super-amministratore',
'sunick' => 'Nome super-amministratore:',
'supass' => 'Password super-amministratore:',
'suconfirm' => 'Conferma password:',
'susuccess' => 'Registrato con successo!',
'initbtn' => 'Inizio della chat',
'initdbexist' => 'Tabelle nel database esistono! Per continuare, prima devi eliminare tabelle manualmente.',
'initsuexist' => 'Super-amministratore è già esistente!',
'initgosetup' => 'Impostazioni Chat',
'captcha' => 'Captcha',
'enabled' => 'Abilitato',
'onlyguests' => 'Solo per ospiti',
'disabled' => 'Disabilitato',
'simple' => 'Facile',
'moderate' => 'Medio',
'extreme' => 'Difficile',
'nick' => 'Login:',
'pass' => 'Password:',
'globalloginpass' => 'Password globale:',
'login' => 'Entrare',
'dbupdate' => 'Database aggiornato!',
'sysmessages' => 'Messaggi del sistema',
'msgenter' => 'Entrata',
'msgexit' => 'Uscita',
'msgmemreg' => 'Registarto',
'msgsureg' => 'Richiedente registrato',
'msgkick' => 'Bannato',
'msgmultikick' => 'Bannati più volte',
'msgallkick' => 'Tutti bannati',
'msgclean' => 'Pulizia chat',
'dateformat' => '<a target="_blank" href="http://php.net/manual/ru/function.date.php#refsect1-function.date-parameters">Fuso Orario</a>',
'admfunc' => 'Funzioni del amministratore',
'allguests' => 'Tutti ospiti',
'cleanmsgs' => 'Cancella messaggi',
'room' => 'Stanza pubblica',
'selection' => 'Scelta',
'cleannick' => 'Al Nome:',
'clean' => 'Cancella',
'kickchat' => 'Ban (%d minuti)',
'kickreason' => 'Messaggio al bannato',
'kickpurge' => 'Pulizia messaggi',
'kick' => 'Kick',
'logoutinact' => 'Espelli partecipante',
'logout' => 'Logout',
'sessions' => 'Sessioni attive',
'view' => 'Visualizza',
'filter' => 'Filtro',
'guestacc' => 'Cambia entrata nella chat',
'guestallow' => 'Accettare',
'guestwait' => 'Accettare ospiti',
'adminallow' => 'Richiedere il permesso al moderatore',
'guestdisallow' => 'Solo membri',
'addsuguest' => 'Aggiungere candidato',
'register' => 'Registrare',
'admmembers' => 'Membri',
'memdel' => 'Eliminare dal database',
'memdeny' => 'Aggiungere membro (!)',
'memsuguest' => 'Aggiunzione al candidato (G)',
'memreg' => 'Aggiornare stato',
'memmod' => 'Aggiunzione moderatore (M)',
'memsumod' => 'Aggiunzione super-moderatore (SM)',
'memadm' => 'Aggiunzione amministratore (A)',
'change' => 'Cambia',
'regguest' => 'Registra opspiti',
'regmem' => 'Registra nuovo utente',
'sessact' => 'Sessioni attive',
'sessnick' => 'Nome',
'sesstimeout' => 'Tempo di attesa in',
'sessua' => 'User-Agent',
'fid' => 'Filtro ID:',
'match' => 'Coincidenza',
'replace' => 'Sostituire',
'allowpm' => 'Accettare in privato',
'regex' => 'Testo regolare',
'apply' => 'Salvare',
'newfilter' => 'Nuovo filtro:',
'add' => 'Aggiungere',
'noframes' => 'Questa chat utilizza <b>frames</b>. Perfavore, avvia il supporto nel tuo Browser o utilizza quello adatto!',
'delselmes' => 'Eliminare messaggi selezionati',
'staffnotes' => 'Note del supporto',
'adminnotes' => 'Note del amministratore',
'notessaved' => 'Note salvate!',
'lastedited' => 'Ultima redazione %1$s %2$s',
'savenotes' => 'Salvare note',
'waitingroom' => 'Degli ospiti',
'waittext' => 'Benvenuto %1$s, rimani in attesa, chat sarà disponibile tra %2$d secondi.',
'admwaittext' => 'Benvenuto %1$s, rimani in attesa, chat sarà disponibile dopo che moderazione accetta entrata.',
'waitreload' => 'Se questa pagina non risponde, non si aggiorna ogni %d secondi, utilizzate il tasto in basso, per ricaricare manualmente',
'reload' => 'Ricaricare',
'rules' => 'Regole',
'talkto' => 'Invia',
'toall' => 'Tutti nella chat',
'tomem' => 'Membri',
'tostaff' => 'Staff',
'toadmin' => 'Amministratore',
'alsopurge' => 'Eliminare messaggi',
'dellast' => 'Eliminare utlimo messaggio',
'delall' => 'Eliminare tutti messaggi',
'switchsingle' => 'Abilitare modalità riga(e)',
'switchmulti' => 'Abilitare multiriga',
'help' => 'Aiuto',
'helpguest' => 'Tutte le funzioni sono chiare, solo utilizzate i tasti. Nelle impostazioni del vostro profilo potete impostare tempo di aggiornamento, colore del carattere e dimensione della finestra.<br><u>Nota:</u> é una chat, per questo anche se non scrivete niente, sarà in automatico salvato dopo un tot di tempo..',
'helpembed' => 'Se volete impostare immagine nel vostro post, attaccate [img] davanti al vostro URL-immagine. Esempio: [img]http://example.com/images/file.jpg sarà agganciato al vostro messaggio.<br> Anche disponibile carica file cliccando pulsante in alro "Browse..."<br>',
'helpmem' => 'Membri: Avete alcune scelte nelle impostazioni del profilo. Si può impostare carattere e cambiare la password in qualsiasi momento.',
'helpmod' => 'Staff: Visualizzate il tasto dell amministratore giù. Questo vi riendizzerà, dove potete ripulire la stanza, bannare, visualizzare sessioni attive e disabilitare accesso agli ospiti, se necessario.',
'helpadm' => 'Amministratori: Vi è disponibile registrare utenti, modificare e rigistrare nuovi nomi senza che ci siano nella stanza.',
'profile' => 'Mio profilo',
'ignore' => 'Ignorare',
'unignore' => 'Non ignorare più',
'refreshrate' => 'Ricarica Chat (5-150 secondi)',
'fontcolour' => 'Colore carattere',
'viewexample' => 'Visualizza esempi',
'bgcolour' => 'Colore sfondo',
'fontface' => 'Carattere',
'roomdefault' => 'Predefinito',
'bold' => 'Grassetto',
'italic' => 'Corsivo',
'small' => 'Diminuito',
'fontexample' => 'Esempio del carattere selezionato',
'timestamps' => 'Visualizzare il tempo',
'embed' => 'Incollare immagine',
'incognito' => 'Modalità incognito',
'changenick' => 'Cambia nome',
'changepass' => 'Cambia password',
'oldpass' => 'Vecchio profilo:',
'newpass' => 'Nuovo profilo:',
'confirmpass' => 'Conferma:',
'savechanges' => 'Salavre cambiamenti',
'reloadpb' => 'Ricarica Chat',
'reloadmsgs' => 'Aggiorna/Indietro',
'chgprofile' => 'Profilo',
'adminbtn' => 'Amministratore',
'admnotes' => 'Note del amministratore',
'notes' => 'Appunti',
'clone' => 'Clona',
'randh' => 'Regole/Aiuto',
'exit' => 'Abbandona',
'bye' => 'Ti salutiamo %s, entra ancora!',
'colourtable' => 'Esempio colori',
'backtoprofile' => 'Tornare nel mio profilo',
'copy' => 'Copia:',
'choosecol' => 'Selezionate colore:',
'randomcol' => 'Colore a caso',
'enter' => 'Entrare',
'error' => 'Errore',
'members' => 'Registrati',
'guests' => 'Ospiti',
'approveguests' => '%d nuovi ospiti da accettare',
'allowchecked' => 'Permettere verifica',
'allowall' => 'Permettere a tutti',
'denychecked' => 'Non permettere verifica',
'denyall' => 'Non permettere a nessuno',
'denymessage' => 'Mandare messaggio con rifiuto:',
'butallowdeny' => 'Inviare',
'waitempty' => 'Non ci sono più richieste disponibili.',
'wrongcaptcha' => 'Captcha errata!',
'captchaexpire' => 'Codice di protezione è già in utilizzo oppure tempo scaduto.',
'noguests' => 'Scusate, entrano solo registrati!',
'curchat' => 'Attualmente %d partecipante (i) in stanza:',
'cantreg' => 'Non puoi registrarti %s',
'alreadyreged' => '%s Già registrato.',
'successreg' => '%s Registrato con successo.',
'cantchgstat' => 'Impossibile cambiare stato %s',
'succdel' => '%s eliminato dal database.',
'succchg' => 'Stato %s cambaito con successo.',
'wrongpass' => 'Password errata!',
'wrongglobalpass' => 'Password globale sbagliata!',
'succprofile' => 'Tuo profilo è stato salvato.',
'backtologin' => 'Tornare nella pag. pincipale.',
'backtochat' => 'Tornare nella chat.',
'Beige' => 'Beige',
'Black' => 'Nero',
'Blue' => 'Blu',
'BlueViolet' => 'Viola-blu',
'Brown' => 'Marrone',
'Cyan' => 'Azzurro',
'DarkBlue' => 'Blu-scuro',
'DarkGreen' => 'Verde-scuro',
'DarkRed' => 'Rosso-scuro',
'DarkViolet' => 'Viola-scuro',
'DeepSkyBlue' => 'Azzurro chiaro',
'Gold' => 'Oro',
'Grey' => 'Griggio',
'Green' => 'Verde',
'HotPink' => 'Rosa-chiaro',
'Indigo' => 'Indigo',
'LightBlue' => 'Blu-chiaro',
'LightGreen' => 'Verde-charo',
'LimeGreen' => 'Verde lime',
'Magenta' => 'Magenta',
'Olive' => 'Oliva',
'Orange' => 'Arancione',
'OrangeRed' => 'Arancione-rosso',
'Purple' => 'Viola',
'Red' => 'Rosso',
'RoyalBlue' => 'Re blu',
'SeaGreen' => 'Verde mare',
'Sienna' => 'Siena',
'Silver' => 'Cromato',
'Tan' => 'Abbronzato',
'Teal' => 'Teal',
'Violet' => 'Viola',
'White' => 'Bianco',
'Yellow' => 'Giallo',
'YellowGreen' => 'Giallo-verde',
'redirectto' => 'Riendirizzamento su:',
'nonhttp' => 'Url richiesto non è http:',
'httpredir' => 'Se non funziona prova questo:',
'actions' => 'Azioni',
'sesip' => 'IP-indirizzo',
'css' => 'CSS stili',
'memberexpire' => 'Time-Out membri (minuti)',
'guestexpire' => 'Time-out ospiti (minuti)',
'kickpenalty' => 'Ban (minuti)',
'entrywait' => 'Tempo di attesa stanza ospiti (secondi)',
'captchatime' => 'Time-Out Captcha (secondi)',
'messageexpire' => 'Time-Out messaggi (minuti)',
'messagelimit' => 'Limite messaggi (pubblici)',
'maxmessage' => 'Lunghezza massimale dei messaggi',
'confirm' => 'Sei sicuro?',
'yes' => 'Si',
'no' => 'No',
'colbg' => 'Colore sfondo',
'coltxt' => 'Colore testo',
'maxname' => 'Lunghezza nome massimale',
'minpass' => 'Lunghezza minima password',
'defaultrefresh' => 'In predefinito tempo di ricarica (secondi)',
'suguests' => 'Accettare ospiti',
'rulestxt' => 'Regole (html)',
'imgembed' => 'Inserimento immagini',
'trackip' => 'Visualizzare IP-sessione',
'captchachars' => 'Simboli, utilizzati in Captcha',
'memkick' => 'Membri possono espellere, se non è presente moderatore',
'forceredirect' => 'Riendirizzamento forzato',
'redirect' => 'Riendirizzamento forzato membri',
'backuprestore' => 'Backup e ripristino',
'backup' => 'Backup',
'restore' => 'Ripristino',
'settings' => 'Impostazioni',
'linkfilter' => 'Filtaggio link',
'chatname' => 'Nome Chat',
'destroy' => 'Distruggere chat',
'destroyed' => 'Chat distrutto',
'topic' => 'Tema',
'passreset' => 'Cambia password',
'cantresetpass' => 'Impossibile cambiare password',
'succpassreset' => 'Password cambiata',
'entermsg' => '%s entrato in chat.',
'exitmsg' => '%s abbandonato chat.',
'memregmsg' => '%s ora registrato membro.',
'suregmsg' => '%s ora registrato candidato.',
'kickmsg' => '%s espcluso dalla chat.',
'multikickmsg' => '%s esclusi dalla chat.',
'allkickmsg' => 'tutti ospiti esplusi dalla chat.',
'cleanmsg' => '%s pulito prima.',
'sendallmsg' => '%s - ',
'sendmemmsg' => '[M] %s - ',
'sendmodmsg' => '[Staff] %s - ',
'sendadmmsg' => '[Admin] %s - ',
'sendprvmsg' => '[%1$s a %2$s] - ',
'msgsendall' => 'Messaggio a tutti',
'msgsendmem' => 'Messaggio ai membri',
'msgsendmod' => 'Messaggio solo ai moderatori',
'msgsendadm' => 'Messaggio solo al amministratore',
'msgsendprv' => 'Messaggio privato',
'numnotes' => 'Numero per salvare',
'revisions' => 'Ripristino:',
'older' => 'Vecchi',
'newer' => 'Nuovi',
'accessdenied' => 'Rifiutato.',
'loggedinas' => 'Sei entrato come %s e non hai accesso alla sessione.',
'newnickname' => 'Nuovo nome:',
'nicknametaken' => 'Nome occupato',
'nopass' => 'Password sbagliata (Almeno %d simboli), senza cambiare nome',
'gdextrequired' => 'The gd extension of PHP is required for this feature. Please install it first.',
'memcachedextrequired' => 'The memcached extension of PHP is required for the caching feature. Please install it first or set the memcached setting back to false.',
'sodiumextrequired' => 'The libsodium extension of PHP is required for the encryption feature. Please install it first or set the encrypted setting back to false.',
'pdo_mysqlextrequired' => 'The pdo_mysql extension of PHP is required for the selected database driver. Please install it first.',
'pdo_pgsqlextrequired' => 'The pdo_pgsql extension of PHP is required for the selected database driver. Please install it first.',
'pdo_sqliteextrequired' => 'The pdo_sqlite extension of PHP is required for the selected database driver. Please install it first.',
'jsonextrequired' => 'The json extension of PHP is required for this feature. Please install it first.',
'sendmail' => 'Mandare messaggio come nuovo pubblico',
'mailsender' => 'Mandare messaggio utilizzando questo indirizzo',
'mailreceiver' => 'Mandare messaggio a questo indirizzo',
'modfallback' => 'Tornare nella stanza di attesa, se non è presente moderatore',
'regpass' => 'Ripetere password<br>Registrarsi',
'guestreg' => 'Permettere di registrarsi agli ospiti',
'asmember' => 'Come membro',
'assuguest' => 'Come candidato',
'fatalerror' => 'Errore fatale',
'prevmatch' => 'Testi nei campi coincidono',
'matchtoolong' => 'Testo troppo lungo. Si puà utilizzare solo 255 simboli, provare suddividere campo in parti',
'nocache' => 'Avtoricarica (per i Browser precedenti, per suddividere dal alto-basso)',
'disablepm' => 'Disabilitare mess. privati',
'disablechat' => 'Disabilitare chat',
'disabletext' => 'Messaggio di chat disabilitata (html)',
'disabledtext' => 'Attualmente disabilitato',
'defaulttz' => 'Fus orario predefinito',
'tz' => 'Fuso Orario',
'optional' => '(optional)',
'userloggedin' => 'Utilizzatore con questo nome è già in rete.',
'regednick' => 'Questo nome appartiene già ad un altro.',
'eninbox' => 'Abilitare offline-posta',
'inboxmsgs' => 'Leggete %d messaggi in entrata',
'offline' => '(offline)',
'deleteacc' => 'Eliminare account',
'eninnone' => 'Per nessuno',
'eninall' => 'Per tutti',
'eninmem' => 'Solo per membri',
'eninstaff' => 'Solo per moderatori',
'eninadmin' => 'Solo per amministratore',
'nickregex' => 'Nickname regex',
'passregex' => 'Password regex',
'externalcss' => 'Link per CSS esterno',
'greetingmsg' => 'Benvenuto %s!',
'entryhelp' => 'Se questa finestra non si aggiorna ogni %d secondi. Dovete abilitare aggiornamento automatico (meta refresh) nel vostro browser. Assicuratevi che non ci sia filtro-web, verificate impostazioni proxy, o plugin del browser per il blocco del aggiornamento! Esempi dei plugin: "Polipo", "NoScript", ecc...<br>Nota, (nel caso di errore di ricarica delle pagine a causa del server/proxy) Вы всегда можете использовать кнопки внизуpotete sempre utilizzare tasti in basso della pagina per ricaricare manualmente.',
'enablegreeting' => 'Visualizzare benvenuto prima del ultimo messaggio',
'unban' => 'Sbloccare',
'sortupdown' => 'Riordinare messaggi dal alto in basso',
'sortframe' => 'Ribaltare chat',
'cs' => 'Registrazione-sensibile',
'hidechatters' => 'Nascondere lista dei partecipanti',
'enfileupload' => 'Abilitare upload dei file',
'msgattache' => 'Annotazione',
'filenotfound' => 'File non trovato!',
'maxuploadsize' => 'Dimensione massima del file KB',
'maxsize' => 'Max. %d KB',
'cssupdate' => 'Note: Default CSS is now hardcoded and can be removed from the CSS setting',
'manualrefresh' => 'Bisogna aggiornare pagina manualmente',
'personalnotes' => 'Appunti personali',
'filtermodkick' => 'Utlizzare filtro di esclusione per moderatori',
];

View File

@ -2,7 +2,7 @@
/* /*
* LE CHAT-PHP - a PHP Chat based on LE CHAT - Russian translation * LE CHAT-PHP - a PHP Chat based on LE CHAT - Russian translation
* *
* Copyright (C) 2015-2017 Daniel Winzen <d@winzen4.de> * Copyright (C) 2015-2018 Daniel Winzen <d@winzen4.de>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -135,11 +135,11 @@ $T=[
'switchsingle' => 'Включить однострочный режим', 'switchsingle' => 'Включить однострочный режим',
'switchmulti' => 'Включить многострочный режим', 'switchmulti' => 'Включить многострочный режим',
'help' => 'Помощь', 'help' => 'Помощь',
'helpguest' => 'Все функции интуитивно понятны, просто используйте кнопки. В настройках вашего профиля вы можете настроить частоту обновления, цвет шрифта и желаемый размер окна входа.<br><u>Заметка:</u> Это чат, поэтому даже если вы ничего не пишете, то будете автоматически зарегистрированы через некоторое время..', 'helpguest' => 'Все функции интуитивно понятны, просто используйте кнопки. В настройках вашего профиля вы можете настроить частоту обновления, цвет шрифта и желаемый размер окна входа.<br><u>Заметка:</u> Это чат, поэтому даже если вы ничего не пишете, то будет автоматически зарегистрировано через некоторое время..',
'helpembed' => 'Если вы хотите встроить изображение в свой пост, прикрепите [img] перед вашим URL-изображением. Пример: [img]http://example.com/images/file.jpg будет прикреплять картинку к вашему сообщению.<br>', 'helpembed' => 'Если вы хотите встроить изображение в свой пост, прикрепите [img] перед вашим URL-изображением. Пример: [img]http://example.com/images/file.jpg будет прикреплять картинку к вашему сообщению.<br>',
'helpmem' => 'Участники: У вас есть несколько вариантов настроек в вашем профиле. Можно настроить шрифт и изменить свой пароль в любое время.', 'helpmem' => 'Участники: У вас есть несколько вариантов настроек в вашем профиле. Можно настроить шрифт и изменить свой пароль в любое время.',
'helpmod' => 'Модераторы: Обратите внимание кнопку администратора внизу. Это перенесет вас на страницу, где вы можете очистить комнату, забанить, просмотреть все активные сеансы и отключить гостевой доступ полностью, если необходимо.', 'helpmod' => 'Модераторы: Обратите внимание кнопку администратора внизу. Это перенесет вас на страницу, где вы можете очистить комнату, забанить, просмотреть все активные сеансы и отключить гостевой доступ полностью, если необходимо.',
'helpadm' => 'Администраторы: Вы способны регистрировать гостей, редактировать пользователей и регистрировать новые ники без их присутствия в комнате.', 'helpadm' => 'Администраторы: Вы способны регистрировать гостей и новые ники без их присутствия в комнате а также редактировать пользователей.',
'profile' => 'Ваш профиль', 'profile' => 'Ваш профиль',
'ignore' => 'Игнорировать', 'ignore' => 'Игнорировать',
'unignore' => 'Больше не игнорировать', 'unignore' => 'Больше не игнорировать',
@ -308,15 +308,15 @@ $T=[
'newnickname' => 'Новое имя:', 'newnickname' => 'Новое имя:',
'nicknametaken' => 'Имя уже занято', 'nicknametaken' => 'Имя уже занято',
'nopass' => 'Некорректный пароль (Хотя бы %d символов), не меняя имени', 'nopass' => 'Некорректный пароль (Хотя бы %d символов), не меняя имени',
'gdextrequired' => 'The gd extension of PHP is required for this feature. Please install it first.', 'gdextrequired' => 'gd расширение для PHP требуетса для етой функции. Пожалуйста установите его сначала...',
'memcachedextrequired' => 'The memcached extension of PHP is required for the caching feature. Please install it first or set the memcached setting back to false.', 'memcachedextrequired' => 'The memcached extension of PHP is required for the caching feature. Please install it first or set the memcached setting back to false.',
'opensslextrequired' => 'The openssl extension of PHP is required for the encryption feature. Please install it first or set the encrypted setting back to false.', 'sodiumextrequired' => 'The libsodium extension of PHP is required for the encryption feature. Please install it first or set the encrypted setting back to false.',
'pdo_mysqlextrequired' => 'The pdo_mysql extension of PHP is required for the selected database driver. Please install it first.', 'pdo_mysqlextrequired' => 'Pdo_mysql расширение для PHP требуетса для драйверов базы данных. Пожалуйста установите его сначала..',
'pdo_pgsqlextrequired' => 'The pdo_pgsql extension of PHP is required for the selected database driver. Please install it first.', 'pdo_pgsqlextrequired' => 'Pdo_pgsql расширение для PHP требуетса для драйверов базы данных. Пожалуйста установите его сначала..',
'pdo_sqliteextrequired' => 'The pdo_sqlite extension of PHP is required for the selected database driver. Please install it first.', 'pdo_sqliteextrequired' => 'Pdo_sqlite расширение для PHP требуетса для драйверов базы данных. Пожалуйста установите его сначала.',
'jsonextrequired' => 'The json extension of PHP is required for this feature. Please install it first.', 'jsonextrequired' => 'Json расширение для PHP требуетса для етой функции. Пожалуйста установите его сначала.',
'sendmail' => 'Отправить сообщение как новое публичное сообщение', 'sendmail' => 'Отправить сообщение как новое публичное',
'mailsender' => 'Отправить сообщение используя этот адрес', 'mailsender' => 'Отправить сообщение на этот адрес',
'mailreceiver' => 'Отправить сообщение по этому адресу', 'mailreceiver' => 'Отправить сообщение по этому адресу',
'modfallback' => 'Вернуться в комнату ожидания, если отстутсвует модератор для подтверждения гостей', 'modfallback' => 'Вернуться в комнату ожидания, если отстутсвует модератор для подтверждения гостей',
'regpass' => 'Повторите пароль<br>Зарегистрироваться', 'regpass' => 'Повторите пароль<br>Зарегистрироваться',
@ -325,8 +325,8 @@ $T=[
'assuguest' => 'Как заявитель', 'assuguest' => 'Как заявитель',
'fatalerror' => 'Фатальная ошибка', 'fatalerror' => 'Фатальная ошибка',
'prevmatch' => 'Тексты в полях совпадают', 'prevmatch' => 'Тексты в полях совпадают',
'matchtoolong' => 'Текст в поле слишком длинное. Можно использовать максимум 255 символов, попробуйте разбить поле на части.', 'matchtoolong' => 'Текст в поле слишком длинний. Можно использовать максимум 255 символов, попробуйте разбить поле на части.',
'nocache' => 'Автопрокрутка (для старых браузеров, для сортрировки сверху-вниз).', 'nocache' => 'Автозагрузка (для старых браузеров, для сортрировки сверху-вниз).',
'disablepm' => 'Отключить личные сообщения', 'disablepm' => 'Отключить личные сообщения',
'disablechat' => 'Отключить чат', 'disablechat' => 'Отключить чат',
'disabletext' => 'Чат отключил сообщение (html)', 'disabletext' => 'Чат отключил сообщение (html)',
@ -334,22 +334,22 @@ $T=[
'defaulttz' => 'Часовой пояс по умолчанию', 'defaulttz' => 'Часовой пояс по умолчанию',
'tz' => 'Часовой пояс', 'tz' => 'Часовой пояс',
'optional' => '(опционально)', 'optional' => '(опционально)',
'userloggedin' => 'Пользователь с этим именем уже в сети.', 'userloggedin' => 'Пользователь с текущим именем уже в сети.',
'regednick' => 'Это имя принадлежит зарегистрированному пользователю.', 'regednick' => 'Это имя принадлежит зарегистрированному пользователю.',
'eninbox' => 'Включить оффлайн-почту', 'eninbox' => 'Включить оффлайн-почту',
'inboxmsgs' => 'Прочитайте %d входящих сообщений', 'inboxmsgs' => 'Прочитайте %d входящих сообщений',
'offline' => '(оффлайн)', 'offline' => '(оффлайн)',
'deleteacc' => 'Удалить аккаунт', 'deleteacc' => 'Удалить аккаунт',
'eninnone' => 'Ни для кого', 'eninnone' => 'Никаму',
'eninall' => 'Для всех', 'eninall' => 'Для всех',
'eninmem' => 'Только для членов', 'eninmem' => 'Только для членов',
'eninstaff' => 'Только для модераторов', 'eninstaff' => 'Только для модераторов',
'eninadmin' => 'Только для админов', 'eninadmin' => 'Только для админов',
'nickregex' => 'Nickname regex', 'nickregex' => 'Ник regex',
'passregex' => 'Password regex', 'passregex' => 'Пароль regex',
'externalcss' => 'Ссылка на внешний CSS файл', 'externalcss' => 'Ссылка на внешний CSS файл',
'greetingmsg' => 'Добро пожаловать %s!', 'greetingmsg' => 'Добро пожаловать %s!',
'entryhelp' => 'Если это окно не обновится в течение %d секунд, Вам нужно включить автоматическое обновление (meta refresh) в вашем браузере. Также убедитесь в отстутствии веб-фильтра, проверьте настройки прокси, либо плагины браузера на блокировку автоматического обновления! Примеры плагинов: "Polipo", "NoScript", и т.д.<br>Тем не менее, (в случае ошибок перезагрузки страниц из-за сервера/прокси) Вы всегда можете использовать кнопки внизу страницы для ручного обновления страницыы.', 'entryhelp' => 'Если это окно не обновится в течение %d секунд, Вам нужно включить автоматическое обновление (meta refresh) в вашем браузере. Также убедитесь в отстутствии веб-фильтра, проверьте настройки прокси, либо плагины браузера на блокировку автоматического обновления! Примеры плагинов: "Polipo", "NoScript", и т.д.<br>Тем не менее, (в случае ошибок перезагрузки страниц из-за сервера/прокси) вы всегда можете использовать кнопки внизу страницы для ручного обновления страницыы.',
'enablegreeting' => 'Показывать приветственное сообщение перед остальными сообщениями', 'enablegreeting' => 'Показывать приветственное сообщение перед остальными сообщениями',
'unban' => 'Разблокировать', 'unban' => 'Разблокировать',
'sortupdown' => 'Сортировать сообщения сверху вниз', 'sortupdown' => 'Сортировать сообщения сверху вниз',
@ -361,7 +361,7 @@ $T=[
'filenotfound' => 'Файл не обнаружен!', 'filenotfound' => 'Файл не обнаружен!',
'maxuploadsize' => 'Максимальный размер файла в КБ', 'maxuploadsize' => 'Максимальный размер файла в КБ',
'maxsize' => 'Макс. %d КБ', 'maxsize' => 'Макс. %d КБ',
'cssupdate' => 'Note: Default CSS is now hardcoded and can be removed from the CSS setting', 'cssupdate' => 'Заметка: по установлению CSS он тяжелый и можна убрать его в CSS настройках',
'manualrefresh' => 'Требуется обновить страницу вручную', 'manualrefresh' => 'Требуется обновить страницу вручную',
'personalnotes' => 'Личные заметки', 'personalnotes' => 'Личные заметки',
'filtermodkick' => 'Применить фильтр исключения для модераторов', 'filtermodkick' => 'Применить фильтр исключения для модераторов',

369
lang_uk.php Normal file
View File

@ -0,0 +1,369 @@
<?php
/*
* LE CHAT-PHP - a PHP Chat based on LE CHAT - Ukrainian translation
*
* Copyright (C) 2015-2018 Daniel Winzen <d@winzen4.de>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
//Native language name: Українська
$T=[
'nodb' => 'Нема зєднення з базою данних!',
'nodbsetup' => 'Нема зєднення з базою данних, будьласка, зробіть, базу данних і поміняйте сценарій, щоб іспользувати правильну базу данних з заданним імям використовувателя і паролеєм!',
'changelang' => 'Поміняти мову:',
'expire' => 'Недійствінна/з теперішнім сроком сесія',
'kicked' => 'Забанений!',
'invalnick' => 'Не вірне имя (%1$d символів максимально і воно має совпадати з вираженням "%2$s")',
'invalpass' => 'Не вірний пароль (Хотя б %1$d символів і воно має совпадати з вираженням "%2$s")',
'noconfirm' => 'Введені паролі не однакові!',
'incorregex' => 'Не правильне регулярне вираження!',
'bottom' => 'Вниз',
'top' => 'Вверх',
'choose' => '(вибрати)',
'setup' => 'Установка чата',
'init' => 'Початкова установка',
'sulogin' => 'Вхід для суперадминистратора',
'sunick' => 'Нік суперадминистратора:',
'supass' => 'Пароль суперадминистратора:',
'suconfirm' => 'Підтвердити пароль:',
'susuccess' => 'Успішно зарегістрірований!',
'initbtn' => 'Початок чата',
'initdbexist' => 'Таблиці бази данних вже бувають! Щоб продовжити, маєте спочатку удалити таблиці вручну.',
'initsuexist' => 'Суперадминистратор вже существує!',
'initgosetup' => 'Перейти на сторінку установкі',
'captcha' => 'Captcha',
'enabled' => 'Включений',
'onlyguests' => 'Тільки для гістей',
'disabled' => 'Виключений',
'simple' => 'Легка',
'moderate' => 'Середня',
'extreme' => 'Сильна',
'nick' => 'Нік:',
'pass' => 'Пароль:',
'globalloginpass' => 'Глобальний пароль:',
'login' => 'Війти',
'dbupdate' => 'База данних успішно обновлена!',
'sysmessages' => 'Системні повідомлення',
'msgenter' => 'Вхід',
'msgexit' => 'Вихід',
'msgmemreg' => 'Зарегістрірованні',
'msgsureg' => 'Заявник зарегістрірован',
'msgkick' => 'Забаненні',
'msgmultikick' => 'Багаторазово забаненні',
'msgallkick' => 'Всі забаненні',
'msgclean' => 'Очищення чата',
'dateformat' => '<a target="_blank" href="http://php.net/manual/ru/function.date.php#refsect1-function.date-parameters">Формат дати</a>',
'admfunc' => 'Административные функції',
'allguests' => 'Всі гості',
'cleanmsgs' => 'Очищення повідомлень',
'room' => 'Загальна комната',
'selection' => 'Вибір',
'cleannick' => 'По ніку:',
'clean' => 'Очистити',
'kickchat' => 'Бан (%d хвилин)',
'kickreason' => 'Повідомлення забаненому',
'kickpurge' => 'Очищення повідомлень',
'kick' => 'Бан',
'logoutinact' => 'Віхід неактивного чата',
'logout' => 'Вийти',
'sessions' => 'Активні сесії',
'view' => 'Перегляд',
'filter' => 'Фільтр',
'guestacc' => 'Замінити гостевий доступ',
'guestallow' => 'Дозволити',
'guestwait' => 'Дозволити з гостевой',
'adminallow' => 'Вимагати одобрення модератора',
'guestdisallow' => 'Тільки участники',
'addsuguest' => 'Добавити заявителя',
'register' => 'Зарегістріровати',
'admmembers' => 'Участники',
'memdel' => 'Удалити з бази данних',
'memdeny' => 'Забопонити вхід (!)',
'memsuguest' => 'Набір др претендента (G)',
'memreg' => 'Установити участника',
'memmod' => 'Набір модератора (M)',
'memsumod' => 'Набір супермодератора (SM)',
'memadm' => 'Набір администратора (A)',
'change' => 'Змінити',
'regguest' => 'Регістрація гістей',
'regmem' => 'Регістрація нових участникив',
'sessact' => 'Активні сесії',
'sessnick' => 'Нік',
'sesstimeout' => 'Час задержки в',
'sessua' => 'User-Agent',
'fid' => 'Фільтр ID:',
'match' => 'Совпадіння',
'replace' => 'Замінити',
'allowpm' => 'Дозволити в личку',
'regex' => 'Регулярне вираження',
'apply' => 'Примінити',
'newfilter' => 'Новий фільтр:',
'add' => 'Добавити',
'noframes' => 'Цей чат використовуе <b>frames</b>. Будь ласка, включить піддержку у вашому браузері або використовуйте підхідящий!',
'delselmes' => 'Удалити вибранне повідомлення',
'staffnotes' => 'Служебні замітки',
'adminnotes' => 'Замітки администратора',
'notessaved' => 'Замітки збереженні!',
'lastedited' => 'Послідній раз редактироний %1$s %2$s',
'savenotes' => 'Зберігти замітки',
'waitingroom' => 'Гістева',
'waittext' => 'Ласково просимо %1$s, наблюдаєтся задержка вхіда, доступ до чату буде через %2$d секунд.',
'admwaittext' => 'Ласково просимо %1$s, наблюдаєтся задержка вхіда, доступ до чату буде доступний після підтверждення модератора.',
'waitreload' => 'Якщо ця сторінка не відповідае, не обновляється кожних %d секунд, використовуйте кнопку внизу, щоб перезагрузити її вручну!',
'reload' => 'Перезагрузити',
'rules' => 'Правила',
'talkto' => 'Відіслати',
'toall' => 'Всі в чаті',
'tomem' => 'Участникі',
'tostaff' => 'Служебні',
'toadmin' => 'Администратор',
'alsopurge' => 'Також очистити повідомлення',
'dellast' => 'Удалити послідні повідомлення',
'delall' => 'Удалити всі повідомлення',
'switchsingle' => 'Включить однорядковий режим',
'switchmulti' => 'Включить багаторядковий режим',
'help' => 'Допомога',
'helpguest' => 'Всі функції добре зрозумілі, просто використовуйте кнопки. В настройках вашого профіля ви можете настроїти частоту обновлення, кольор шрифта і бажаємий позмір вікна для вхіда.<br><u>Замітка:</u> Це чат, тому даже якщо ви нічого не пишете, то буде автоматично зарегістріровано через деякий час...',
'helpembed' => 'Якщо ви хочете встроїти картинку в свій пост, прикріпіть [img] перед вашим URL-картинкою. Приклад: [img]http://example.com/images/file.jpg буде прикріпленна картинка до вашого повідомлення.<br>',
'helpmem' => 'Участники: У вас є декілька варіантів настройок у вашому профілі. Можете настроїти шрифт або изменити свій пароль в любий час.',
'helpmod' => 'Модератори: Зверніть увагу на кнопку администратора внизу. Це перенесе вас на сторінку, де ви зможете очистити кімнату, забанити, передивитись всі активні сессії і відключити гістевий доступ повністю, якщо обязанно.',
'helpadm' => 'Администратори: Ви згiдні регiстріровати гістей, редактирувати участників і регістріровати нові нікі без їх присутності в кімнаті.',
'profile' => 'Ваш профіль',
'ignore' => 'Игнорірувати',
'unignore' => 'Більше не ігнорірувати',
'refreshrate' => 'Частота обновлення (5-150 секунд)',
'fontcolour' => 'Кольор шрифта',
'viewexample' => 'Подивитись приклади',
'bgcolour' => 'Фоновий коляр',
'fontface' => 'Шрифт',
'roomdefault' => 'Дефаулт',
'bold' => 'Жирний',
'italic' => 'Курсивний',
'small' => 'Маленький',
'fontexample' => 'Приклад вибранного вами шрифта',
'timestamps' => 'Показати відмітки часу',
'embed' => 'Вставити картинку',
'incognito' => 'Режим аноним',
'changenick' => 'Замінити імя',
'changepass' => 'Замінити пароль',
'oldpass' => 'Старий пароль:',
'newpass' => 'Новий пароль:',
'confirmpass' => 'Підтвердити:',
'savechanges' => 'Зберігти иізмінення',
'reloadpb' => 'Перезагрузити почтовий ящік',
'reloadmsgs' => 'Обновити',
'chgprofile' => 'Профіль',
'adminbtn' => 'Администратор',
'admnotes' => 'Зауваження администратора',
'notes' => 'Зауваження',
'clone' => 'Клонувати',
'randh' => 'Правила і допомога',
'exit' => 'Вихід',
'bye' => 'Допобачення %s, заходіть знову!',
'colourtable' => 'Приклад колорів',
'backtoprofile' => 'Вернутись до вашого профиля',
'copy' => 'Копія:',
'choosecol' => 'Виберіть ваш коляр:',
'randomcol' => 'Случайний коляр',
'enter' => 'Війти в чат',
'error' => 'Ошибка',
'members' => 'Зарегістріруванні',
'guests' => 'Гості',
'approveguests' => '%d новіе гості для одобрення',
'allowchecked' => 'Дозволити провірку',
'allowall' => 'Дозволити всім',
'denychecked' => 'Заборонити провірку',
'denyall' => 'Заборонити всім',
'denymessage' => 'Відіслати повідомлення з відмовою:',
'butallowdeny' => 'Відіслати',
'waitempty' => 'Більше запросів для одобрення нема.',
'wrongcaptcha' => 'Не правильна капча!',
'captchaexpire' => 'Захисний код вже использується або стік час.',
'noguests' => 'Вибачайте, входять тільки зарегистрируванні!',
'curchat' => 'Заресь %d размова (в) в кімнаті:',
'cantreg' => 'Ви не можете зарегістріруватись %s',
'alreadyreged' => '%s вже зарегістрірований.',
'successreg' => '%s успішно зарегістрірований.',
'cantchgstat' => 'Неможливо замінити статус %s',
'succdel' => '%s успішно удалений з бази данних.',
'succchg' => 'Статус %s успішно замінений.',
'wrongpass' => 'Невірний пароль!',
'wrongglobalpass' => 'Невірний глобальний пароль!',
'succprofile' => 'Ваш профіль був успішно збережений.',
'backtologin' => 'Вернутись на сторінку вхіда.',
'backtochat' => 'Вернутись в чат.',
'Beige' => 'Бежевий',
'Black' => 'Чорний',
'Blue' => 'Синій',
'BlueViolet' => 'Фіолєтово-синій',
'Brown' => 'Коричневий',
'Cyan' => 'Голубий',
'DarkBlue' => 'Темно-синий',
'DarkGreen' => 'Темно-зелений',
'DarkRed' => 'Темно-червоний',
'DarkViolet' => 'Темно-фиолетовий',
'DeepSkyBlue' => 'Голубе небо',
'Gold' => 'Золотий',
'Grey' => 'Сірий',
'Green' => 'Зелений',
'HotPink' => 'Ярко-розовий',
'Indigo' => 'Індіго',
'LightBlue' => 'Світло-синій',
'LightGreen' => 'Світло-зелений',
'LimeGreen' => 'Зелений лайм',
'Magenta' => 'Пурпурний',
'Olive' => 'Оливковий',
'Orange' => 'Оранжевий',
'OrangeRed' => 'Оранжево-червоний',
'Purple' => 'Фіолєтовий',
'Red' => 'Червоний',
'RoyalBlue' => 'Королівский синій',
'SeaGreen' => 'Морський зелений',
'Sienna' => 'Сіена',
'Silver' => 'Серібряний',
'Tan' => 'Загарний',
'Teal' => 'Чірок',
'Violet' => 'Фіолєтовий',
'White' => 'Білий',
'Yellow' => 'Жовтий',
'YellowGreen' => 'Жовто-зелений',
'redirectto' => 'Перенаправлення на:',
'nonhttp' => 'Запрошенна ссилка не http:',
'httpredir' => 'Якщо це не працює, попробуйте це:',
'actions' => 'Дії',
'sesip' => 'IP-адрес',
'css' => 'CSS стилі',
'memberexpire' => 'Тайм-аут участникив (хвилин)',
'guestexpire' => 'Тайм-аут гістей (хвилин)',
'kickpenalty' => 'Бан (хвилин)',
'entrywait' => 'Час задерження в гістевій (секунд)',
'captchatime' => 'Тайм-аут Captcha (секунд)',
'messageexpire' => 'Тайм-аут повідомлення (хвилин)',
'messagelimit' => 'Ліміт повідомлень (загальних)',
'maxmessage' => 'Максимальна довжина повідомлення',
'confirm' => 'Ви впевненні?',
'yes' => 'Так',
'no' => 'Ні',
'colbg' => 'Фоновий коляр',
'coltxt' => 'Кольор текста',
'maxname' => 'Максимальна довжина часу',
'minpass' => 'Мінімальна довжина пароля',
'defaultrefresh' => 'По дефаулт час перезагрузки повідомлень (секунд)',
'suguests' => 'Дозволити гістей',
'rulestxt' => 'Правила (html)',
'imgembed' => 'Вставка картінкі',
'trackip' => 'Показати IP-сесію',
'captchachars' => 'Символи, використовувані в Captcha',
'memkick' => 'Участники можуть ісключати, якщо нема модератора',
'forceredirect' => 'Примусовне перенаправлення',
'redirect' => 'Користувача скрипт перенаправлення',
'backuprestore' => 'Бэкап і восстановлення',
'backup' => 'Бэкап',
'restore' => 'Восстановлення',
'settings' => 'Настройки',
'linkfilter' => 'Фильтрація ссилок',
'chatname' => 'Імя чата',
'destroy' => 'Удалити чат',
'destroyed' => 'Чат вдачно удаленний',
'topic' => 'Тема',
'passreset' => 'Зкинути пароль',
'cantresetpass' => 'Неможливо зкинути пароль',
'succpassreset' => 'Пароль успішно зкинутий',
'entermsg' => '%s війшов в чат.',
'exitmsg' => '%s покинув чат.',
'memregmsg' => '%s тепер зарегистрированний участник.',
'suregmsg' => '%s тепер зарегистрированний заявник.',
'kickmsg' => '%s виключений з чата.',
'multikickmsg' => '%s виключені з чата.',
'allkickmsg' => 'Всі гості виключені з чата.',
'cleanmsg' => '%s був очищений.',
'sendallmsg' => '%s - ',
'sendmemmsg' => '[M] %s - ',
'sendmodmsg' => '[Staff] %s - ',
'sendadmmsg' => '[Admin] %s - ',
'sendprvmsg' => '[%1$s to %2$s] - ',
'msgsendall' => 'Повідомлення всім',
'msgsendmem' => 'Повідомлення тільки участникам',
'msgsendmod' => 'Повідомлення тільки модераторам',
'msgsendadm' => 'Повідомлення тільки администраторам',
'msgsendprv' => 'Приватне повідомлення',
'numnotes' => 'Номер ісправлень для зберіження',
'revisions' => 'Ісправлень:',
'older' => 'Старі',
'newer' => 'Нові',
'accessdenied' => 'В вхіді відмовленно.',
'loggedinas' => 'Ви війшли як %s і не маєте доступа до цеї секції.',
'newnickname' => 'Нове імя:',
'nicknametaken' => 'Імя вже занято',
'nopass' => 'Негідний пароль (Хотя б %d символів), не міняя імя',
'gdextrequired' => 'The gd extension of PHP is required for this feature. Please install it first.',
'memcachedextrequired' => 'The memcached extension of PHP is required for the caching feature. Please install it first or set the memcached setting back to false.',
'sodiumextrequired' => 'The libsodium extension of PHP is required for the encryption feature. Please install it first or set the encrypted setting back to false.',
'pdo_mysqlextrequired' => 'The pdo_mysql extension of PHP is required for the selected database driver. Please install it first.',
'pdo_pgsqlextrequired' => 'The pdo_pgsql extension of PHP is required for the selected database driver. Please install it first.',
'pdo_sqliteextrequired' => 'The pdo_sqlite extension of PHP is required for the selected database driver. Please install it first.',
'jsonextrequired' => 'The json extension of PHP is required for this feature. Please install it first.',
'sendmail' => 'Відправити повідомлення як нове публичне заявлення',
'mailsender' => 'Отправить сообщение на цей адрес',
'mailreceiver' => 'Отправить сообщение по цьому адресу',
'modfallback' => 'Вернутись в кімнату задержки, якщо нема модератора для підтверждення гістей',
'regpass' => 'Повторіть пароль<br>Зарегистрироватись',
'guestreg' => 'Дозволити гістям регістріроватись самостійно',
'asmember' => 'Як учасник',
'assuguest' => 'Як заявник',
'fatalerror' => 'Фатальна ошибка',
'prevmatch' => 'Тексти в стрічках совпадають',
'matchtoolong' => 'Текст в стрічки задлінне. Можна використати максимально 255 символів, попробуйте розділити строки на частини.',
'nocache' => 'Автопрокрутка (для старих браузерів, для сортріровкі з верху-вниз).',
'disablepm' => 'Відключити приватні повідомлення',
'disablechat' => 'Відключити чат',
'disabletext' => 'Чат відключив повідомлення (html)',
'disabledtext' => 'Часково відключенний',
'defaulttz' => 'Часовий пояс по дефаулт',
'tz' => 'Часовий пояс',
'optional' => '(опційно)',
'userloggedin' => 'Гость з таким имям вже в чаті.',
'regednick' => 'Це імя використовуе зарегістріруваний участник.',
'eninbox' => 'Включити офлайн-почту',
'inboxmsgs' => 'Прочитайте %d вхідящих повідомлень',
'offline' => '(офлайн)',
'deleteacc' => 'Удалити акаунт',
'eninnone' => 'Ні для кого',
'eninall' => 'Для всіх',
'eninmem' => 'Тільки для участників',
'eninstaff' => 'Тількі для модераторів',
'eninadmin' => 'Тоільки для адмінів',
'nickregex' => 'Nickname regex',
'passregex' => 'Password regex',
'externalcss' => 'Ссилка на внішний CSS файл',
'greetingmsg' => 'Добро пожалоувати %s!',
'entryhelp' => 'Якщо це вікно не обновиться через %d секунд, Вам треба включити автоматичне обновлення (meta refresh) у вашому браузері. Також увіртесь щоб не було веб-фильтра, провірьте настройкі проксі, або плагіни браузера на блокіровку автоматичного обновлення! Прклади плагінов: "Polipo", "NoScript", и т.д.<br>Тем не меньше, (в случаї ошибок перезагрузки сторінок за сервера/проксі) Ви завжди зможете использувати кнопки внизу сторінки для ручного обновлення.',
'enablegreeting' => 'Показувати привітальнее повідомлення перед другими повідомленнями',
'unban' => 'Розблокирувати',
'sortupdown' => 'Сортіроувати повідомлення з верху вниз',
'sortframe' => 'Перестроиїти',
'cs' => 'Регістр-сенситивний',
'hidechatters' => 'Заховати список людей в чаті',
'enfileupload' => 'Дозврлити файлові загрузки',
'msgattache' => 'Прикріпленні',
'filenotfound' => 'Файл не найдений!',
'maxuploadsize' => 'Максимальний розмір файла в КБ',
'maxsize' => 'Макс. %d КБ',
'cssupdate' => 'Note: Default CSS is now hardcoded and can be removed from the CSS setting',
'manualrefresh' => 'Потрібно обновити сторінку вручну',
'personalnotes' => 'Лічні замітки',
'filtermodkick' => 'Примінити фільтр исключення для модераторів',
];

View File

@ -8,7 +8,7 @@ $file = "<?php
/* /*
* LE CHAT-PHP - a PHP Chat based on LE CHAT - $english translation * LE CHAT-PHP - a PHP Chat based on LE CHAT - $english translation
* *
* Copyright (C) 2015-2017 Daniel Winzen <d@winzen4.de> * Copyright (C) 2015-2018 Daniel Winzen <d@winzen4.de>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@ -1,23 +1,4 @@
<?php <?php
/*
* LE CHAT-PHP - a PHP Chat based on LE CHAT - Simplified Chinese translation
*
* Copyright (C) 2015-2017 Daniel Winzen <d@winzen4.de>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
//Native language name: 简体中文 //Native language name: 简体中文
$T=[ $T=[
'nodb' => '没有连接到数据库!', 'nodb' => '没有连接到数据库!',
@ -29,8 +10,8 @@ $T=[
'invalpass' => '无效的密码 (至少包含%1$d个字符并且必须与正则表达式"%2$s"匹配)', 'invalpass' => '无效的密码 (至少包含%1$d个字符并且必须与正则表达式"%2$s"匹配)',
'noconfirm' => '重复密码不匹配!', 'noconfirm' => '重复密码不匹配!',
'incorregex' => '正则表达式错误!', 'incorregex' => '正则表达式错误!',
'bottom' => 'Bottom', 'bottom' => '底部',
'top' => '排行', 'top' => '顶部',
'choose' => '(选择)', 'choose' => '(选择)',
'setup' => '安装程序', 'setup' => '安装程序',
'init' => '初始化设置', 'init' => '初始化设置',
@ -64,7 +45,7 @@ $T=[
'msgmultikick' => '批量踢出', 'msgmultikick' => '批量踢出',
'msgallkick' => '全部踢出', 'msgallkick' => '全部踢出',
'msgclean' => '房间清理', 'msgclean' => '房间清理',
'dateformat' => '<a target="_blank" href="http://php.net/manual/en/function.date.php#refsect1-function.date-parameters">Date formating</a>', 'dateformat' => '<a target="_blank" href="http://php.net/manual/en/function.date.php#refsect1-function.date-parameters">日期格式</a>',
'admfunc' => '管理员功能', 'admfunc' => '管理员功能',
'allguests' => '全部游客', 'allguests' => '全部游客',
'cleanmsgs' => '清理消息', 'cleanmsgs' => '清理消息',
@ -83,7 +64,7 @@ $T=[
'filter' => '过滤', 'filter' => '过滤',
'guestacc' => '修改游客访问', 'guestacc' => '修改游客访问',
'guestallow' => '允许', 'guestallow' => '允许',
'guestwait' => 'Allow with waitingroom', 'guestwait' => '等候室允许',
'adminallow' => '请求审核人批准', 'adminallow' => '请求审核人批准',
'guestdisallow' => '只仅正式成员', 'guestdisallow' => '只仅正式成员',
'addsuguest' => '注册申请员', 'addsuguest' => '注册申请员',
@ -94,7 +75,7 @@ $T=[
'memsuguest' => '申请为申请人 (G)', 'memsuguest' => '申请为申请人 (G)',
'memreg' => '设置为正式成员', 'memreg' => '设置为正式成员',
'memmod' => '设置为主持人 (M)', 'memmod' => '设置为主持人 (M)',
'memsumod' => 'Set to supermod (SM)', 'memsumod' => '设置为0.5 (SM)',
'memadm' => '设置为管理员 (A)', 'memadm' => '设置为管理员 (A)',
'change' => '修改', 'change' => '修改',
'regguest' => '注册游客', 'regguest' => '注册游客',
@ -119,246 +100,246 @@ $T=[
'lastedited' => '上次由%1$s编辑 时间为%2$s', 'lastedited' => '上次由%1$s编辑 时间为%2$s',
'savenotes' => '保存说明', 'savenotes' => '保存说明',
'waitingroom' => '等候室', 'waitingroom' => '等候室',
'waittext' => 'Welcome %1$s, your login has been delayed, you can access the chat in %2$d seconds.', 'waittext' => '欢迎%1$s, 您的登录信息已被延迟,您可以访问聊天记录%2$d秒.',
'admwaittext' => 'Welcome %1$s, your login has been delayed, you can access the chat as soon, as a moderator lets you in.', 'admwaittext' => '欢迎%1$s, 您的登录信息已被延迟,您可以尽快访问聊天内容,因为主持人会让您进入.',
'waitreload' => 'If this page doesn\'t refresh every %d seconds, use the button below to reload it manually!', 'waitreload' => '如果这个页面没有刷新%d秒, 使用下面的按钮手动重新加载!',
'reload' => 'Reload', 'reload' => '刷新',
'rules' => 'Rules', 'rules' => '规则',
'talkto' => 'Send to', 'talkto' => '发送至',
'toall' => 'All chatters', 'toall' => '所有的聊天者',
'tomem' => 'Members only', 'tomem' => '内部使用',
'tostaff' => 'Staff only', 'tostaff' => '只供职员使用',
'toadmin' => 'Admin only', 'toadmin' => '仅限管理员',
'alsopurge' => 'Also purge messages', 'alsopurge' => '同时清除消息',
'dellast' => 'Delete last message', 'dellast' => '删除上一条消息',
'delall' => 'Delete all messages', 'delall' => '删除所有信息',
'switchsingle' => 'Switch to single-line', 'switchsingle' => '切换到单行',
'switchmulti' => 'Switch to multi-line', 'switchmulti' => '切换到多行',
'help' => 'Help', 'help' => '帮助',
'helpguest' => 'All functions should be pretty much self-explaining, just use the buttons. In your profile you can adjust the refresh rate, font colour and your preferred input box size.<br><u>Note:</u> This is a chat, so if you don\'t keep talking, you will be automatically logged out after a while.', 'helpguest' => '这里一切解释权归我所有,只需使用按钮。 在您的配置文件中,您可以调整刷新率,字体颜色和首选输入框大小.<br><u>注意:</u> 这是一个聊天室,所以如果你不再说话,你会在一段时间后自动退出.',
'helpembed' => 'If you want to embed an image in your post, simply put [img] in front of your image URL. Example: [img]http://example.com/images/file.jpg will embed the image in your post.', 'helpembed' => '如果您想在帖子中嵌入图片,只需将[img]放在图片网址前面即可。示例:[img]http://example.com/images/file.jpg会将图片嵌入到您的帖子中.',
'helpmem' => 'Members: You\'ll have some more options in your profile. You can adjust your font face, change your password anytime and of course you can delete your account.', 'helpmem' => '成员:您的个人资料中还有更多选项。 您可以随时调整字体,更改密码,当然也可以删除您的帐户.',
'helpmod' => 'Moderators: Notice the Admin-button at the bottom. It\'ll bring up a page where you can clean the room, kick chatters, view all active sessions and disable guest access completely if needed.', 'helpmod' => '版主:请注意底部。 它将打开一个页面,您可以在其中清理房间,踢聊天,查看所有活动会话并在需要时完全禁用访客访问权限.',
'helpadm' => 'Admins: You\'ll be furthermore able to register guests, edit members and register new nicknames.', 'helpadm' => '管理员:您还可以注册客人,编辑成员并注册新的昵称。',
'profile' => 'Your Profile', 'profile' => '你的个人资料',
'ignore' => 'Ignore', 'ignore' => '忽略',
'unignore' => 'Don\'t ignore anymore', 'unignore' => '取消忽略',
'refreshrate' => 'Refresh rate (5-150 seconds)', 'refreshrate' => '刷新时间(5-150)',
'fontcolour' => 'Font colour', 'fontcolour' => '字体颜色',
'viewexample' => 'View examples', 'viewexample' => '查看示例',
'bgcolour' => 'Background colour', 'bgcolour' => '背景色',
'fontface' => 'Fontface', 'fontface' => '字体',
'roomdefault' => 'Room Default', 'roomdefault' => '默认房间',
'bold' => 'Bold', 'bold' => '大胆',
'italic' => 'Italic', 'italic' => '斜体',
'fontexample' => 'Example for your chosen font', 'fontexample' => '您选择的字体的示例',
'timestamps' => 'Show Timestamps', 'timestamps' => '显示时间戳',
'embed' => 'Embed images', 'embed' => '嵌入图像',
'incognito' => 'Incognito mode', 'incognito' => '隐身模式',
'changepass' => 'Change Password', 'changepass' => '更改密码',
'oldpass' => 'Old password:', 'oldpass' => '旧密码:',
'newpass' => 'New password:', 'newpass' => '新密码:',
'confirmpass' => 'Confirm new password:', 'confirmpass' => '在重复一次新密码:',
'savechanges' => 'Save changes', 'savechanges' => '保存更改',
'reloadpb' => 'Reload Post Box', 'reloadpb' => '刷新缓存',
'reloadmsgs' => 'Reload Messages', 'reloadmsgs' => '刷新一下消息',
'chgprofile' => 'Profile', 'chgprofile' => '个人资料',
'adminbtn' => 'Admin', 'adminbtn' => '管理',
'admnotes' => 'Admin Notes', 'admnotes' => '管理员公告',
'notes' => 'Notes', 'notes' => '公告',
'clone' => 'Clone', 'clone' => '打开新标签',
'randh' => 'Rules & Help', 'randh' => '条款 & 帮助',
'exit' => 'Exit Chat', 'exit' => '退出聊天室',
'bye' => 'Bye %s, visit again soon!', 'bye' => '再见%s, 欢迎你再此访问!',
'colourtable' => 'Colourtable', 'colourtable' => '颜色表',
'backtoprofile' => 'Back to your Profile', 'backtoprofile' => '回到你的个人资料',
'copy' => 'Copy:', 'copy' => '验证码:',
'choosecol' => 'Guests, choose a colour:', 'choosecol' => '客人,选择一种颜色:',
'randomcol' => 'Random Colour', 'randomcol' => '随机颜色',
'enter' => 'Enter Chat', 'enter' => '回车',
'error' => 'Error', 'error' => '错误',
'members' => 'Members', 'members' => '会员',
'guests' => 'Guests', 'guests' => '游客',
'approveguests' => '%d new guests to approve', 'approveguests' => '%d新客人批准',
'allowchecked' => 'Allow checked', 'allowchecked' => '允许检查',
'allowall' => 'Allow all', 'allowall' => '允许全部',
'denychecked' => 'Deny checked', 'denychecked' => '拒绝检查',
'denyall' => 'Deny all', 'denyall' => '全部拒绝',
'denymessage' => 'Send message to denied:', 'denymessage' => '发送消息给拒绝:',
'butallowdeny' => 'Submit', 'butallowdeny' => '提交',
'waitempty' => 'No more entry requests to approve.', 'waitempty' => '不再需要批准入场申请.',
'wrongcaptcha' => 'Wrong Captcha', 'wrongcaptcha' => '错误验证码',
'captchaexpire' => 'Captcha already used or timed out.', 'captchaexpire' => '验证码已经使用或超时.',
'noguests' => 'Sorry, currently members only!', 'noguests' => '对不起,目前仅限会员!',
'curchat' => 'Currently %d chatter(s) in room:', 'curchat' => '目前%d人在房间里聊天:',
'cantreg' => 'Can\'t register %s', 'cantreg' => '无法注册%s',
'alreadyreged' => '%s is already registered.', 'alreadyreged' => '%s已经注册',
'successreg' => '%s successfully registered.', 'successreg' => '%s成功注册.',
'cantchgstat' => 'Can\'t change status of %s', 'cantchgstat' => '无法改变状态%s',
'succdel' => '%s successfully deleted from database.', 'succdel' => '%s已成功从数据库中删除.',
'succchg' => 'Status of %s successfully changed.', 'succchg' => '%s的状态已更改.',
'wrongpass' => 'Wrong Password!', 'wrongpass' => '密码错误!',
'wrongglobalpass' => 'Wrong global Password!', 'wrongglobalpass' => '错误的全球密码!',
'succprofile' => 'Your profile has successfully been saved.', 'succprofile' => '您的个人资料已成功保存.',
'backtologin' => 'Back to the login page.', 'backtologin' => '返回登录页面.',
'backtochat' => 'Back to the chat.', 'backtochat' => '回到聊天室.',
'Beige' => 'Beige', 'Beige' => '米色',
'Black' => 'Black', 'Black' => '黑色',
'Blue' => 'Blue', 'Blue' => '蓝色',
'BlueViolet' => 'Blue violet', 'BlueViolet' => '紫罗兰色',
'Brown' => 'Brown', 'Brown' => '棕色',
'Cyan' => 'Cyan', 'Cyan' => '青色',
'DarkBlue' => 'Dark blue', 'DarkBlue' => '深蓝',
'DarkGreen' => 'Dark green', 'DarkGreen' => '深绿色',
'DarkRed' => 'Dark red', 'DarkRed' => '深红',
'DarkViolet' => 'Dark violet', 'DarkViolet' => '深紫罗兰',
'DeepSkyBlue' => 'Sky blue', 'DeepSkyBlue' => '天蓝色',
'Gold' => 'Gold', 'Gold' => '',
'Grey' => 'Grey', 'Grey' => '灰色',
'Green' => 'Green', 'Green' => '绿色',
'HotPink' => 'Hot pink', 'HotPink' => '亮粉色',
'Indigo' => 'Indigo', 'Indigo' => '靛青',
'LightBlue' => 'Light blue', 'LightBlue' => '浅蓝',
'LightGreen' => 'Light green', 'LightGreen' => '浅绿色',
'LimeGreen' => 'Lime green', 'LimeGreen' => '柠檬绿',
'Magenta' => 'Magenta', 'Magenta' => '品红',
'Olive' => 'Olive', 'Olive' => '橄榄',
'Orange' => 'Orange', 'Orange' => '橙子',
'OrangeRed' => 'Orange red', 'OrangeRed' => '橙红色',
'Purple' => 'Purple', 'Purple' => '紫色',
'Red' => 'Red', 'Red' => '红色',
'RoyalBlue' => 'Royal blue', 'RoyalBlue' => '宝蓝色',
'SeaGreen' => 'Sea green', 'SeaGreen' => '海绿色',
'Sienna' => 'Sienna', 'Sienna' => '黄土',
'Silver' => 'Silver', 'Silver' => '银色',
'Tan' => 'Tan', 'Tan' => '黄褐色',
'Teal' => 'Teal', 'Teal' => '蓝绿色',
'Violet' => 'Violet', 'Violet' => '紫色',
'White' => 'White', 'White' => '白色',
'Yellow' => 'Yellow', 'Yellow' => '黄色',
'YellowGreen' => 'Yellow green', 'YellowGreen' => '黄绿色',
'redirectto' => 'Redirecting to:', 'redirectto' => '重定向到:',
'nonhttp' => 'Non-http link requested:', 'nonhttp' => '请求非http链接:',
'httpredir' => 'If it\'s not working, try this one:', 'httpredir' => '如果它不起作用,试试这个:',
'actions' => 'Actions', 'actions' => '操作',
'sesip' => 'IP-Address', 'sesip' => 'IP地址',
'css' => 'CSS Style', 'css' => 'CSS风格',
'memberexpire' => 'Member timeout (minutes)', 'memberexpire' => '会员超时(分钟)',
'guestexpire' => 'Guest timeout (minutes)', 'guestexpire' => '访客超时(分钟)',
'kickpenalty' => 'Kick penalty (minutes)', 'kickpenalty' => '踢罚(分钟)',
'entrywait' => 'Waiting room time (seconds)', 'entrywait' => '等候室时间(秒)',
'captchatime' => 'Captcha timeout (seconds)', 'captchatime' => '验证码超时(秒)',
'messageexpire' => 'Message timeout (minutes)', 'messageexpire' => '消息超时(分钟)',
'messagelimit' => 'Message limit (public)', 'messagelimit' => '消息限制(公开)',
'maxmessage' => 'Maximal message length', 'maxmessage' => '最大消息长度',
'confirm' => 'Are you sure?', 'confirm' => '你确定吗?',
'yes' => 'Yes', 'yes' => '',
'no' => 'No', 'no' => '',
'colbg' => 'Background colour', 'colbg' => '背景色',
'coltxt' => 'Text colour', 'coltxt' => '文字颜色',
'maxname' => 'Maximal nickname length', 'maxname' => '最大昵称长度',
'minpass' => 'Minimal password length', 'minpass' => '最小密码长度',
'defaultrefresh' => 'Default message reload time (seconds)', 'defaultrefresh' => '默认消息重新加载时间(秒)',
'suguests' => 'Enable applicants', 'suguests' => '启用申请人',
'rulestxt' => 'Rules (html)', 'rulestxt' => '规则(html',
'imgembed' => 'Embed images', 'imgembed' => '嵌入图像',
'trackip' => 'Show session-IP', 'trackip' => '显示会话-IP',
'captchachars' => 'Characters used in Captcha', 'captchachars' => '验证码中使用的字符',
'memkick' => 'Members can kick, if no moderator is present', 'memkick' => '如果没有主持人,会员可以踢',
'forceredirect' => 'Force redirection', 'forceredirect' => '强制重定向',
'redirect' => 'Custom redirection script', 'redirect' => '自定义重定向脚本',
'backuprestore' => 'Backup and restore', 'backuprestore' => '备份还原',
'backup' => 'Backup', 'backup' => '备用',
'restore' => 'Restore', 'restore' => '恢复',
'settings' => 'Settings', 'settings' => '设置',
'linkfilter' => 'Linkfilter', 'linkfilter' => '链接过滤器',
'chatname' => 'Chat name', 'chatname' => '聊天名称',
'destroy' => 'Destroy chat', 'destroy' => '摧毁聊天',
'destroyed' => 'Successfully destroyed chat', 'destroyed' => '成功破坏了聊天',
'topic' => 'Topic', 'topic' => '话题',
'passreset' => 'Reset password', 'passreset' => '重设密码',
'cantresetpass' => 'Can\'t reset password', 'cantresetpass' => '无法重置密码',
'succpassreset' => 'Successfully reset password', 'succpassreset' => '成功重置密码',
'entermsg' => '%s entered the chat.', 'entermsg' => '%s进入聊天室.',
'exitmsg' => '%s left the chat.', 'exitmsg' => '%s离开了聊天室',
'memregmsg' => '%s is now a registered member.', 'memregmsg' => '%s现在是注册会员.',
'suregmsg' => '%s is now a registered applicant.', 'suregmsg' => '%s现在是注册申请人.',
'kickmsg' => '%s has been kicked.', 'kickmsg' => '%s被踢了.',
'multikickmsg' => '%s have been kicked.', 'multikickmsg' => '%s被踢了.',
'allkickmsg' => 'All guests have been kicked.', 'allkickmsg' => '所有客人都被踢了.',
'cleanmsg' => '%s has been cleaned.', 'cleanmsg' => '%s已经清理干净了.',
'sendallmsg' => '%s - ', 'sendallmsg' => '%s - ',
'sendmemmsg' => '[M] %s - ', 'sendmemmsg' => '[M] %s - ',
'sendmodmsg' => '[Staff] %s - ', 'sendmodmsg' => '[Staff] %s - ',
'sendadmmsg' => '[Admin] %s - ', 'sendadmmsg' => '[Admin] %s - ',
'sendprvmsg' => '[%1$s to %2$s] - ', 'sendprvmsg' => '[%1$s to %2$s] - ',
'msgsendall' => 'Message to all', 'msgsendall' => '给所有人的信息',
'msgsendmem' => 'Message to members only', 'msgsendmem' => '仅向会员发送消息',
'msgsendmod' => 'Message to staff only', 'msgsendmod' => '仅向员工发送消息',
'msgsendadm' => 'Message to admins only', 'msgsendadm' => '仅向管理员发送消息',
'msgsendprv' => 'Private message', 'msgsendprv' => '私人信息',
'numnotes' => 'Number of notes revisions to keep', 'numnotes' => '要保留的备注数量',
'revisions' => 'Revisions:', 'revisions' => '修订:',
'older' => 'Older', 'older' => '旧的',
'newer' => 'Newer', 'newer' => '较新',
'accessdenied' => 'Access denied', 'accessdenied' => '拒绝访问',
'loggedinas' => 'You are logged in as %s and don\'t have access to this section.', 'loggedinas' => '您以%s身份登录无法访问此部分',
'newnickname' => 'New nickname:', 'newnickname' => '新昵称:',
'nicknametaken' => 'Nickname is already taken', 'nicknametaken' => '昵称已被取消',
'nopass' => 'Invalid password (At least %d characters), not changing nickname', 'nopass' => '密码无效(至少%d个字符不更改昵称.',
'gdextrequired' => 'The gd extension of PHP is required for this feature. Please install it first.', 'gdextrequired' => '此功能需要PHP的gd扩展名。 请先安装它。.',
'memcachedextrequired' => 'The memcached extension of PHP is required for the caching feature. Please install it first or set the memcached setting back to false.', 'memcachedextrequired' => '缓存功能需要PHP的memcached扩展。 请先安装它或将memcached设置恢复为false.',
'opensslextrequired' => 'The openssl extension of PHP is required for the encryption feature. Please install it first or set the encrypted setting back to false.', 'sodiumextrequired' => '加密功能需要PHP的libsodium扩展。 请先安装它或将加密设置恢复为false.',
'pdo_mysqlextrequired' => 'The pdo_mysql extension of PHP is required for the selected database driver. Please install it first.', 'pdo_mysqlextrequired' => '所选数据库驱动程序需要PHP的pdo_mysql扩展名。 请先安装它.',
'pdo_pgsqlextrequired' => 'The pdo_pgsql extension of PHP is required for the selected database driver. Please install it first.', 'pdo_pgsqlextrequired' => '所选数据库驱动程序需要PHP的pdo_pgsql扩展名。 请先安装它。',
'pdo_sqliteextrequired' => 'The pdo_sqlite extension of PHP is required for the selected database driver. Please install it first.', 'pdo_sqliteextrequired' => '所选数据库驱动程序需要PHP的pdo_sqlite扩展。 请先安装它.',
'jsonextrequired' => 'The json extension of PHP is required for this feature. Please install it first.', 'jsonextrequired' => '此功能需要PHP的json扩展名。 请先安装它.',
'sendmail' => 'Send mail on new public message', 'sendmail' => '发送新公共邮件的邮件',
'mailsender' => 'Send mail using this address', 'mailsender' => '使用此地址发送邮件',
'mailreceiver' => 'Send mail to this address', 'mailreceiver' => '发送邮件到这个地址',
'modfallback' => 'Fallback to waiting room, if no moderator is present to approve guests', 'modfallback' => '如果没有主持人来批准客人,请回到候诊室',
'regpass' => 'Repeat password<br>to register', 'regpass' => '重复密码<br>注册',
'guestreg' => 'Let guests register themselves', 'guestreg' => '让客人自己注册',
'asmember' => 'As member', 'asmember' => '作为会员',
'assuguest' => 'As applicant', 'assuguest' => '作为申请人',
'fatalerror' => 'Fatal error', 'fatalerror' => '致命错误',
'prevmatch' => 'Your match was as follows', 'prevmatch' => '你的申请如下',
'matchtoolong' => 'Your match was too long. You can use max. 255 characters. Try splitting it up.', 'matchtoolong' => '你的申请太长了。 你可以用max。 255个字符。 尝试拆分它.',
'nocache' => 'Autoscroll (for old browsers or top-to-bottom sort).', 'nocache' => '自动滚动(适用于旧浏览器或从上到下排序).',
'disablepm' => 'Disable private messages', 'disablepm' => '禁用私人消息',
'disablechat' => 'Disable chat', 'disablechat' => '禁用聊天',
'disabletext' => 'Chat disabled message (html)', 'disabletext' => '聊天禁用消息(html',
'disabledtext' => 'Temporarily disabled', 'disabledtext' => '暂时禁用',
'defaulttz' => 'Default time zone', 'defaulttz' => '默认时区',
'tz' => 'Time zone', 'tz' => '时区',
'optional' => '(optional)', 'optional' => '(可选的)',
'userloggedin' => 'A user with this nickname is already logged in.', 'userloggedin' => '具有此昵称的用户已登录.',
'regednick' => 'This nickname is a registered member.', 'regednick' => '这个昵称是注册会员.',
'eninbox' => 'Enable offline inbox', 'eninbox' => '启用离线收件箱',
'inboxmsgs' => 'Read %d messages in your inbox', 'inboxmsgs' => '阅读收件箱中的%d条消息',
'offline' => '(offline)', 'offline' => '(离线)',
'deleteacc' => 'Delete account', 'deleteacc' => '删除帐户',
'eninnone' => 'For no one', 'eninnone' => '一个人',
'eninall' => 'For everyone', 'eninall' => '所以人',
'eninmem' => 'For members only', 'eninmem' => '仅限会员',
'eninstaff' => 'For staff only', 'eninstaff' => '仅限员工',
'eninadmin' => 'For admins only', 'eninadmin' => '仅适用于管理员',
'nickregex' => 'Nickname regex', 'nickregex' => '昵称正则表达式',
'passregex' => 'Password regex', 'passregex' => '密码正则表达式',
'externalcss' => 'Link to external CSS file', 'externalcss' => '链接到外部CSS文件',
'greetingmsg' => 'Welcome %s!', 'greetingmsg' => '欢迎%s!',
'entryhelp' => 'If this frame does not reload in %d seconds, you\'ll have to enable automatic redirection (meta refresh) in your browser. Also make sure no web filter, local proxy tool or browser plugin is preventing automatic refreshing! This could be for example "Polipo", "NoScript", etc.<br>As a workaround (or in case of server/proxy reload errors) you can always use the buttons at the bottom to refresh manually.', 'entryhelp' => 'If this frame does not reload in %d seconds, you\'ll have to enable automatic redirection (meta refresh) in your browser. Also make sure no web filter, local proxy tool or browser plugin is preventing automatic refreshing! This could be for example "Polipo", "NoScript", etc.<br>As a workaround (or in case of server/proxy reload errors) you can always use the buttons at the bottom to refresh manually.',
'enablegreeting' => 'Show a greeting message before showing the messages', 'enablegreeting' => '在显示消息之前显示问候消息',
'unban' => 'Unban', 'unban' => '取消禁止',
'sortupdown' => 'Sort messages from top to bottom', 'sortupdown' => '从上到下对消息进行排序',
'sortframe' => 'Rearrange', 'sortframe' => '改变方向',
'cs' => 'Case sensitive', 'cs' => '大小写',
'hidechatters' => 'Hide list of chatters', 'hidechatters' => '隐藏聊天列表',
'enfileupload' => 'Enable file uploads', 'enfileupload' => '启用文件上载',
'msgattache' => 'Attachement', 'msgattache' => '附件',
'filenotfound' => 'File not found!', 'filenotfound' => '找不到文件!',
'maxuploadsize' => 'Maximum upload size in KB', 'maxuploadsize' => '最大上载大小(KB',
'maxsize' => 'Max %d KB', 'maxsize' => 'Max %d KB',
'cssupdate' => 'Note: Default CSS is now hardcoded and can be removed from the CSS setting', 'cssupdate' => '注意默认的CSS现在是硬编码的可以从CSS设置中删除。',
]; ];