Compare commits

..

3 Commits

4 changed files with 334 additions and 11 deletions

View File

@ -1,3 +1,6 @@
Version 1.15.1 - Dec. 19, 2015
Fix XSS vulnerability in change nickname + make it available for registered users only
Version 1.15 - Dec. 17, 2015 Version 1.15 - Dec. 17, 2015
Made code reading easier for newbies Made code reading easier for newbies
Removed inefficient memcached caching of members and ignored Removed inefficient memcached caching of members and ignored

25
chat.php Executable file → Normal file
View File

@ -1721,13 +1721,13 @@ function send_profile($arg=''){
echo "<tr><td>&nbsp;</td><td>$I[confirmpass]</td><td><input type=\"password\" name=\"confirmpass\" size=\"20\"></td></tr>"; echo "<tr><td>&nbsp;</td><td>$I[confirmpass]</td><td><input type=\"password\" name=\"confirmpass\" size=\"20\"></td></tr>";
echo '</table></td></tr></table></td></tr>'; echo '</table></td></tr></table></td></tr>';
thr(); thr();
echo "<tr><td><table style=\"width:100%;text-align:left;\"><tr><th>$I[changenickname]</th></tr>";
echo '<tr><td><table style="border-spacing:0px;margin-left:auto;">';
echo "<tr><td>&nbsp;</td><td>$I[newnickname]</td><td><input type=\"text\" name=\"newnickname\" size=\"20\"></td></tr>";
echo "<tr><td>&nbsp;</td><td>$I[newpass]</td><td><input type=\"password\" name=\"new_pass\" size=\"20\"></td></tr>";
echo '</table></td></tr></table></td></tr>';
thr();
} }
echo "<tr><td><table style=\"width:100%;text-align:left;\"><tr><th>$I[changenickname]</th></tr>";
echo '<tr><td><table style="border-spacing:0px;margin-left:auto;">';
echo "<tr><td>&nbsp;</td><td>$I[newnickname]</td><td><input type=\"text\" name=\"newnickname\" size=\"20\"></td></tr>";
echo "<tr><td>&nbsp;</td><td>$I[newpass]</td><td><input type=\"password\" name=\"new_pass\" size=\"20\"></td></tr>";
echo '</table></td></tr></table></td></tr>';
thr();
echo '<tr><td>'.submit($I['savechanges'])."</td></tr></table></form><br>$H[backtochat]</div>"; echo '<tr><td>'.submit($I['savechanges'])."</td></tr></table></form><br>$H[backtochat]</div>";
print_end(); print_end();
} }
@ -2175,7 +2175,7 @@ function parse_sessions(){
$countmods=0; $countmods=0;
$P=array(); $P=array();
foreach($lines as $temp){ foreach($lines as $temp){
if($temp['entry']!=0){ if($temp['entry']!=0 && $temp['status']>0){
if(!$temp['incognito']){ if(!$temp['incognito']){
$P[$temp['nickname']]=[$temp['nickname'], $temp['style'], $temp['status']]; $P[$temp['nickname']]=[$temp['nickname'], $temp['style'], $temp['status']];
} }
@ -2432,7 +2432,7 @@ function save_profile(){
$stmt=$db->prepare("INSERT INTO $C[prefix]ignored (ign, ignby) VALUES (?, ?);"); $stmt=$db->prepare("INSERT INTO $C[prefix]ignored (ign, ignby) VALUES (?, ?);");
$stmt->execute(array($_REQUEST['ignore'], $U['nickname'])); $stmt->execute(array($_REQUEST['ignore'], $U['nickname']));
} }
if(!empty($_REQUEST['newnickname'])){ if($U['status']>1 && !empty($_REQUEST['newnickname'])){
set_new_nickname(); set_new_nickname();
} }
if(!empty($_REQUEST['newpass']) && !valid_pass($_REQUEST['newpass'])){ if(!empty($_REQUEST['newpass']) && !valid_pass($_REQUEST['newpass'])){
@ -2446,6 +2446,9 @@ function set_new_nickname(){
if(!isSet($_REQUEST['new_pass']) || !valid_pass($_REQUEST['new_pass'])){ if(!isSet($_REQUEST['new_pass']) || !valid_pass($_REQUEST['new_pass'])){
send_profile(sprintf($I['nopass'], get_setting('minpass'))); send_profile(sprintf($I['nopass'], get_setting('minpass')));
} }
if(!valid_nick($_REQUEST['newnickname'])){
send_profile(sprintf($I['invalnick'], get_setting('maxname')));
}
$U['passhash']=md5(sha1(md5($_REQUEST['newnickname'].$_REQUEST['new_pass']))); $U['passhash']=md5(sha1(md5($_REQUEST['newnickname'].$_REQUEST['new_pass'])));
$stmt=$db->prepare("SELECT id FROM $C[prefix]sessions WHERE nickname=? UNION SELECT id FROM $C[prefix]members WHERE nickname=?;"); $stmt=$db->prepare("SELECT id FROM $C[prefix]sessions WHERE nickname=? UNION SELECT id FROM $C[prefix]members WHERE nickname=?;");
$stmt->execute(array($_REQUEST['newnickname'], $_REQUEST['newnickname'])); $stmt->execute(array($_REQUEST['newnickname'], $_REQUEST['newnickname']));
@ -2823,8 +2826,7 @@ function print_messages($delstatus=''){
$timestamps=false; $timestamps=false;
} }
$expire=time()-60*get_setting('messageexpire'); $expire=time()-60*get_setting('messageexpire');
// ignore possible deadlock warning $db->exec("DELETE FROM $C[prefix]messages WHERE id IN (SELECT * FROM (SELECT id FROM $C[prefix]messages WHERE postdate<$expire) AS t);");
@$db->exec("DELETE FROM $C[prefix]messages WHERE postdate<$expire;");
if(!empty($delstatus)){ if(!empty($delstatus)){
$stmt=$db->prepare("SELECT postdate, id, text FROM $C[prefix]messages WHERE ". $stmt=$db->prepare("SELECT postdate, id, text FROM $C[prefix]messages WHERE ".
"id IN (SELECT * FROM (SELECT id FROM $C[prefix]messages WHERE poststatus=1 ORDER BY id DESC LIMIT $messagelimit) AS t) ". "id IN (SELECT * FROM (SELECT id FROM $C[prefix]messages WHERE poststatus=1 ORDER BY id DESC LIMIT $messagelimit) AS t) ".
@ -3349,6 +3351,7 @@ function load_lang(){
$L=array( $L=array(
'de' =>'Deutsch', 'de' =>'Deutsch',
'en' =>'English', 'en' =>'English',
'id' =>'Bahasa Indonesia',
'ru' =>'Русский' 'ru' =>'Русский'
); );
if(isSet($_REQUEST['lang']) && array_key_exists($_REQUEST['lang'], $L)){ if(isSet($_REQUEST['lang']) && array_key_exists($_REQUEST['lang'], $L)){
@ -3369,7 +3372,7 @@ function load_lang(){
function load_config(){ function load_config(){
global $C; global $C;
$C=array( $C=array(
'version' =>'1.15', // Script version 'version' =>'1.15.2', // Script version
'dbversion' =>14, // Database version 'dbversion' =>14, // Database version
'keeplimit' =>3, // Amount of messages to keep in the database (multiplied with max messages displayed) - increase if you have many private messages 'keeplimit' =>3, // Amount of messages to keep in the database (multiplied with max messages displayed) - increase if you have many private messages
'msgencrypted' =>false, // Store messages encrypted in the database to prevent other database users from reading them - true/false - visit the setup page after editing! 'msgencrypted' =>false, // Store messages encrypted in the database to prevent other database users from reading them - true/false - visit the setup page after editing!

View File

@ -18,6 +18,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
//Language: Deutsch
$T=array( $T=array(
'nodb' => 'Keine Verbindung zur Datenbank!', 'nodb' => 'Keine Verbindung zur Datenbank!',
'nodbsetup' => 'Keine Verbindung zur Datenbank, bitte erstelle eine Datenbank und bearbeite das Skript, um die korrekte Datenbank mit angegebenem Benutzernamen und Passwort zu benutzen.', 'nodbsetup' => 'Keine Verbindung zur Datenbank, bitte erstelle eine Datenbank und bearbeite das Skript, um die korrekte Datenbank mit angegebenem Benutzernamen und Passwort zu benutzen.',

316
lang_id.php Normal file
View File

@ -0,0 +1,316 @@
<?php
/*
* LE CHAT-PHP - a PHP Chat based on LE CHAT - Indonesian translation
*
* Copyright (C) 2015 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/>.
*/
//Language: Bahasa Indonesia
$T=array(
'nodb' => 'Tak ada sambungan ke basisdata!',
'nodbsetup' => 'Tak ada sambungan ke basisdata, silahkan buat basisdata dan sunting skrip ini agar menggunakan basisdata yang benar dengan nama pengguna dan kata sandi yang telah diberikan!',
'changelang' => 'Ubah bahasa:',
'expire' => 'Sesi salah/kadaluarsa',
'kicked' => 'Diusir!',
'invalnick' => 'Nama pengguna salah (maksimal %d karakter, karakter spesial tak diizinkan)',
'invalpass' => 'Kata sandi salah (minimal %d karakter)',
'noconfirm' => 'Konfirmasi kata sandi tidak cocok!',
'incorregex' => 'Regular expression salah!',
'bottom' => 'Bawah',
'top' => 'Atas',
'choose' => '(pilih)',
'setup' => 'Pengaturan obrolan',
'init' => 'Pengaturan awal',
'sulogin' => 'Masuk Superadmin',
'sunick' => 'Nama Superadmin:',
'supass' => 'Kata sandi Superadmin:',
'suconfirm' => 'Konfirmasi kata sandi:',
'susuccess' => 'Berhasil terdaftar!',
'initbtn' => 'Memulai obrolan',
'initdbexist' => 'Tabel basisdata sudah ada! Untuk melanjutkan, Anda harus menghapus tabel ini secara manual terlebih dahulu.',
'initsuexist' => 'Superadmin sudah ada!',
'initgosetup' => 'Ke halaman-pengaturan',
'captcha' => 'Captcha',
'enabled' => 'Diaktifkan',
'onlyguests' => 'Hanya untuk tamu',
'disabled' => 'Dimatikan',
'simple' => 'Sederhana',
'moderate' => 'Moderat',
'extreme' => 'Ekstrim',
'nick' => 'Nama:',
'pass' => 'Kata sandi:',
'globalloginpass' => 'Sandi global:',
'login' => 'Masuk',
'dbupdate' => 'Basisdata berhasil diperbarui!',
'sysmessages' => 'Sistem perpesanan',
'msgenter' => 'Memasuki',
'msgexit' => 'Meninggalkan',
'msgmemreg' => 'Anggota terdaftar',
'msgsureg' => 'Pemohon terdaftar',
'msgkick' => 'Diusir',
'msgmultikick' => 'Pemohon diusir',
'msgallkick' => 'Semuanya diusir',
'msgclean' => 'Ruang dibersihkan',
'dateformat' => '<a target="_blank" href="http://php.net/manual/en/function.date.php#refsect1-function.date-parameters">Date formating</a>',
'admfunc' => 'Fungsi administrasi',
'allguests' => 'Semua tamu',
'cleanmsgs' => 'Bersihkan pesan',
'room' => 'Seluruh ruangan',
'selection' => 'Pilihan',
'cleannick' => 'Nama berikut:',
'clean' => 'Bersih',
'kickchat' => '<b>Usir pengobrol</b> (%d menit)',
'kickreason' => 'pesan pengusiran:',
'kickpurge' => 'Bersihkan pesan',
'kick' => 'Usir',
'logoutinact' => 'Keluar pengobrol aktif',
'logout' => 'Keluar',
'sessions' => 'Lihat sesi yang aktif',
'view' => 'Lihat',
'filter' => 'Saring',
'guestacc' => 'Ubah akses tamu',
'guestallow' => 'Izinkan',
'guestwait' => 'Memungkinkan dengan ruang tunggu',
'adminallow' => 'Memerlukan persetujuan moderator',
'guestdisallow' => 'Hanya anggota',
'addsuguest' => 'Tambah pemohon',
'register' => 'Daftar',
'admmembers' => 'Anggota',
'memdel' => 'Hapus dari basisdata',
'memdeny' => 'Akses ditolak (!)',
'memsuguest' => 'Tetapkan menjadi pemohon (G)',
'memreg' => 'Tetapkan menjadi anggota biasa',
'memmod' => 'Tetapkan menjadi moderator (M)',
'memsumod' => 'Tetapkan menjadi supermod (SM)',
'memadm' => 'Tetapkan menjadi admin (A)',
'change' => 'Ubah',
'regguest' => 'Mendaftar tamu',
'regmem' => 'Daftar anggota baru',
'sessact' => 'Sesi aktif',
'sessnick' => 'Nama',
'sesstimeout' => 'Waktu habis dalam',
'sessua' => 'User-Agent',
'fid' => 'ID penyaring:',
'match' => 'Cocok',
'replace' => 'Ganti',
'allowpm' => 'Izinkan pada PM',
'regex' => 'Regex',
'apply' => 'Terapkan',
'newfilter' => 'penyaring baru:',
'add' => 'Tambah',
'noframes' => 'Obrolan ini menggunakan <b>frames</b>. Mohon aktifkan frame pada penjelajah anda atau gunakan penjelajah yang cocok!',
'delselmes' => 'Hapus pesan terpilih',
'staffnotes' => 'Catatan Staf',
'adminnotes' => 'Catatan admin',
'notessaved' => 'Catatan tersimpan!',
'lastedited' => 'Terakhir disunting oleh %1$s pada %2$s',
'savenotes' => 'Simpan catatan',
'waitingroom' => 'Ruang tunggu',
'waittext' => 'Selamat datang %1$s, info masuk anda telah tertunda, Anda dapat mengakses obrolan dalam %2$d detik.',
'admwaittext' => 'Selamat datang %1$s, info masuk anda telah tertunda, Anda dapat mengakses obrolan segera, Sebagai moderator memungkinkan anda untuk masuk.',
'waitreload' => 'Jika halaman tidak memuat-ulang dalam %d detik, Gunakan tombol dibawah ini untuk memuat-ulang secara manual!',
'reload' => 'Muat-ulang',
'rules' => 'Peraturan',
'talkto' => 'Kirim ke',
'toall' => 'Semua pengobrol',
'tomem' => 'Hanya member',
'tostaff' => 'Hanya staf',
'toadmin' => 'Hanya Admin',
'alsopurge' => 'Juga hapus bersih pesan',
'dellast' => 'Hapus pesan terakhir',
'delall' => 'Hapus semua pesan',
'switchsingle' => 'Beralih ke baris-tunggal',
'switchmulti' => 'Beralih ke multi-baris',
'help' => 'Bantuan',
'helpguest' => 'Semua fungsi seharusnya cukup banyak memberikan penjelasan, tinggal gunakan tombol. Dalam profil Anda dapat menentukan jangka waktu muat-ulang halaman, warna font dan ukuran kotak masukan.<br><u>Note:</u> Ini adalah obrolan, jadi jika Anda tidak ikut dalam obrolan, Anda akan otomatis dikeluarkan dari obrolan dalam jangka waktu yang sudah ditentukan.',
'helpembed' => 'Jika anda ingin menyisipkan gambar pada pos anda, taruh saja [img] didepan url gambar. Contoh: [img]http://example.com/images/file.jpg akan menyisipkan gambar pada pos anda.',
'helpmem' => 'Anggota: Anda akan memiliki beberapa pilihan di profil Anda. Anda dapat menyesuaikan font dan dapat mengubah kata sandi kapan saja.',
'helpmod' => 'Moderator: Perhatikan tombol admin di bagian bawah. Ini akan memunculkan halaman dimana Anda dapat membersihkan ruangan, mengusir pengobrol, melihat semua sesi aktif dan mematikan semua hak akses tamu jika diperlukan.',
'helpadm' => 'Admin: Anda dapat lebih jauh lagi bisa mendaftarkan tamu, menyunting anggota dan mendaftarkan nama baru tanpa mereka berada di ruangan.',
'profile' => 'Profil Anda',
'ignore' => 'Setuju',
'unignore' => 'Tak setuju apapun',
'refreshrate' => 'kecepatan penyegaran (5-150 detik)',
'fontcolour' => 'Warna font',
'viewexample' => 'Lihat contoh',
'bgcolour' => 'Warna latar belakang',
'fontface' => 'jenis font',
'roomdefault' => 'Ruang bawaan',
'bold' => 'Tebal',
'italic' => 'Miring',
'fontexample' => 'Contoh untuk font yang anda pilih',
'timestamps' => 'Tunjukkan penanda waktu',
'embed' => 'Tanamkan gambar (Membutuhkan kuki)',
'incognito' => 'Mode penyamaran',
'pbsize' => 'Ukuran kotak pos',
'nbsize' => 'Ukuran otak catatan',
'width' => 'Lebar:',
'height' => 'Tinggi:',
'changepass' => 'Ubah kata sandi',
'oldpass' => 'Kata sandi lama:',
'newpass' => 'Kata sandi baru:',
'confirmpass' => 'Konfirmasi kata sandi baru:',
'savechanges' => 'Simpan perubahan',
'reloadpb' => 'Muat-ulang kotak pos',
'reloadmsgs' => 'Muat-ulang pesan',
'chgprofile' => 'Profil',
'adminbtn' => 'Admin',
'admnotes' => 'Catatan Admin',
'notes' => 'Catatan',
'clone' => 'Klon',
'randh' => 'Peraturan & Bantuan',
'exit' => 'Keluar dari obrolan',
'bye' => 'Dah %s, Kunjungi lagi nanti!',
'colourtable' => 'Tabel warna',
'backtoprofile' => 'Kembali ke profil anda',
'copy' => 'Salin:',
'choosecol' => 'Silahkan pilih warna:',
'randomcol' => 'Warna acak',
'enter' => 'Masuk obrolan',
'error' => 'Kesalahan:',
'members' => 'Anggota',
'guests' => 'Tamu',
'approveguests' => '%d tamu baru untuk disetujui',
'allowchecked' => 'Izinkan terpilih',
'allowall' => 'Izinkan semuanya',
'denychecked' => 'Tolak terpilih',
'denyall' => 'Tolak semuanya',
'denymessage' => 'Kirim pesan untuk menolak:',
'butallowdeny' => 'Kirim',
'waitempty' => 'Tak ada lagi permintaan masuk untuk disetujui.',
'wrongcaptcha' => 'Captcha salah',
'captchaexpire' => 'Captcha sudah digunakan atau kadaluarsa.',
'noguests' => 'Maaf, saat ini hanya anggota!',
'curchat' => 'Sekarang terdapat %d pengobrol di ruangan:',
'cantreg' => 'Tak bisa mendaftarkan %s',
'alreadyreged' => '%s sudah terdaftar.',
'successreg' => '%s berhasil terdaftar.',
'cantchgstat' => 'Tak dapat mengganti status dari %s',
'succdel' => '%s berhasil dihapus dari basisdata.',
'succchg' => 'Status dari %s berhasil dirubah.',
'wrongpass' => 'Kata sandi salah!',
'wrongglobalpass' => 'Kata sani global salah!',
'succprofile' => 'Profil anda sudah berhasil disimpan.',
'backtologin' => 'Kembali ke halaman masuk.',
'backtochat' => 'Kembali ke obrolan.',
'Beige' => 'Krem',
'Black' => 'Hitam',
'Blue' => 'Biru',
'BlueViolet' => 'Lembayung biru',
'Brown' => 'Coklat',
'Cyan' => 'Sian',
'DarkBlue' => 'Biru tua',
'DarkGreen' => 'Hihau tua',
'DarkRed' => 'Merah tua',
'DarkViolet' => 'Lembayung tua',
'DeepSkyBlue' => 'Biru langit',
'Gold' => 'Emas',
'Grey' => 'Abu-abu',
'Green' => 'Hijau',
'HotPink' => 'Merah jambu',
'Indigo' => 'Nila',
'LightBlue' => 'Biru muda',
'LightGreen' => 'Hijau muda',
'LimeGreen' => 'Hijau limu',
'Magenta' => 'Magenta',
'Olive' => 'Zaitun',
'Orange' => 'Jingga',
'OrangeRed' => 'Merah jingga',
'Purple' => 'Ungu',
'Red' => 'Merah',
'RoyalBlue' => 'Biru royal',
'SeaGreen' => 'Hijau laut',
'Sienna' => 'Sienna',
'Silver' => 'Perak',
'Tan' => 'Kecoklatan',
'Teal' => 'Teal',
'Violet' => 'Lembayung',
'White' => 'Putih',
'Yellow' => 'Kuning',
'YellowGreen' => 'Hjau kuning',
'redirectto' => 'Mengarahkan ke:',
'nonhttp' => 'Meminta tautan non-http:',
'httpredir' => 'Jika tak bekerja, pilih salah satu:',
'actions' => 'Tindakan',
'sesip' => 'Alamat-IP',
'css' => 'CSS Style',
'memberexpire' => 'Batas waktu anggota (menit)',
'guestexpire' => 'Batas waktu tamu (menit)',
'kickpenalty' => 'Sanksi pengusiran (menit)',
'entrywait' => 'Waktu ruang tunggu (detik)',
'captchatime' => 'Batas waktu captcha (detik)',
'messageexpire' => 'Batas waktu pesan (menit)',
'messagelimit' => 'Batas pesan (publik)',
'maxmessage' => 'Panjang pesan maksimal',
'confirm' => 'Apakah Anda yakin?',
'yes' => 'Ya',
'no' => 'Tidak',
'colbg' => 'Warna latar belakang',
'coltxt' => 'Warna tulisan',
'maxname' => 'Panjang maksimal nama',
'minpass' => 'Panjang minimal kata sandi',
'defaultrefresh' => 'Waktu muat-ulang pesan bawaan (detik)',
'suguests' => 'Memungkinkan pemohon',
'rulestxt' => 'Peraturan (html)',
'imgembed' => 'Tanam gambar',
'trackip' => 'Tunjukkan sesi-IP',
'captchachars' => 'Karakter yang digunakan dalam Captcha',
'memkick' => 'Anggota dapat mengusir, jika tak ada moderator',
'forceredirect' => 'Paksa pengalihan',
'redirect' => 'Skrip pengalihan kustom',
'backuprestore' => 'Cadang dan pulihkan',
'backup' => 'Cadangkan',
'restore' => 'Pulihkan',
'settings' => 'Pengaturan',
'linkfilter' => 'penyaring-tautan',
'enablejs' => 'Izinkan javascript agar pemuatan pesan lebih baik',
'chatname' => 'Nama obrolan',
'destroy' => 'Musnahkan obrolan',
'destroyed' => 'Berhasil memusnahkan obrolan',
'topic' => 'Topik',
'passreset' => 'Atur-ulang kata sandi',
'cantresetpass' => 'Tidak bisa mengatur-ulang kata sandi',
'succpassreset' => 'Berhasil mengatur-ulang kata sandi',
'entermsg' => '%s memasuki obrolan.',
'exitmsg' => '%s keluar dari obrolan.',
'memregmsg' => '%s sekarang adalah anggota terdaftar.',
'suregmsg' => '%s sekarang adalah pemohon terdaftar.',
'kickmsg' => '%s sudah diusir.',
'multikickmsg' => '%s telah diusir.',
'allkickmsg' => 'Semua pengobrol sudah diusir.',
'cleanmsg' => '%s sudah dibersihkan.',
'sendallmsg' => '%s - ',
'sendmemmsg' => '[M] %s - ',
'sendmodmsg' => '[Staf] %s - ',
'sendadmmsg' => '[Admin] %s - ',
'sendprvmsg' => '[%1$s ke %2$s] - ',
'msgsendall' => 'Pesan ke semuanya',
'msgsendmem' => 'Pesan hanya kepada member',
'msgsendmod' => 'Pesan hanya kepada staf',
'msgsendadm' => 'Pesan hanya kepada admin',
'msgsendprv' => 'Pesan pribadi',
'numnotes' => 'Jumlah catatan Revisi yang disimpan',
'revisions' => 'Revisi:',
'older' => 'Lama',
'newer' => 'Baru',
'accessdenied' => 'Akses ditolak',
'loggedinas' => 'Anda masuk sebagai %s dan tak dapat mengakses bagian ini.',
'changenickname' => 'Ubah nama',
'newnickname' => 'Nama baru:',
'nicknametaken' => 'Nama sudah ada',
'nopass' => 'Kata sandi salah (Minimal %d karakter), tak merubah nama'
);
?>