Kommunauty
Connexion
Inscription

[Mini Tuto]Traduction Xnova


Courroux Messages : 2211

Salut à tous,

donc je viens vous poster un petit tutoriel. Juste pour information ce tutoriel est de moi

Comme vous le savez Xnova est traduit en plusieurs langues. Il y a peu, j'ai décidé de permettre aux joueurs de choisir entre deux langues, l'anglais et le français.

Donc je vous poste comment faire.

Allez dans la table Game_User puis dans lang.

La langue par défaut est le français. Remplacez "fr" par "Default", sauf si vous voulez mettre une autre langue par défaut tel que l'anglais vous mettez "en" à la place de "Default".

Puis ouvrez reg.php et remplacez le tout par:

<?php

/**
 * reg&#46;php
 *
 * @version 1&#46;1
 * @copyright 2008 by Chlorel for XNova
 */

define('INSIDE' , true);
define('INSTALL' , false);
define('DISABLE_IDENTITY_CHECK', true);

$xnova_root_path = '&#46;/';
include($xnova_root_path &#46; 'extension&#46;inc');
include($xnova_root_path &#46; 'common&#46;' &#46; $phpEx);

includeLang('reg');

function sendpassemail($emailaddress, $password)
{
    global $lang;

    $parse&#91;'gameurl'&#93; = GAMEURL;
    $parse&#91;'password'&#93; = $password;
    $email = parsetemplate($lang&#91;'mail_welcome'&#93;, $parse);
    $status = mymail($emailaddress, $lang&#91;'mail_title'&#93;, $email);
    return $status;
}

function mymail($to, $title, $body, $from = '')
{
    $from = trim($from);

    if (!$from) {
        $from = ADMINEMAIL;
    }

    $rp = ADMINEMAIL;

    $head = '';
    $head &#46;= "Content-Type&#58; text/html rn";
$head  &#46;= "charset&#58; iso-8859-1 rn";
    $head &#46;= "Date&#58; " &#46; date('r') &#46; " rn";
    $head &#46;= "Return-Path&#58; $rp rn";
    $head &#46;= "From&#58; $from rn";
    $head &#46;= "Sender&#58; $from rn";
    $head &#46;= "Reply-To&#58; $from rn";
    $head &#46;= "Organization&#58; $org rn";
    $head &#46;= "X-Sender&#58; $from rn";
    $head &#46;= "X-Priority&#58; 3 rn";
    $body = str_replace("rn", "n", $body);
    $body = str_replace("n", "rn", $body);

    return mail($to, $title, $body, $head);
}

    $_POST&#91;'email'&#93; = strip_tags($_POST&#91;'email'&#93;);
    if (!is_email($_POST&#91;'email'&#93;)) {
        $errorlist &#46;= """ &#46; $_POST&#91;'email'&#93; &#46; "" " &#46; $lang&#91;'error_mail'&#93;;
        $errors++;
    }

    if (!$_POST&#91;'planet'&#93;) {
        $errorlist &#46;= $lang&#91;'error_planet'&#93;;
        $errors++;
    }

    if (preg_match("/&#91;^A-z0-9_-&#93;/", $_POST&#91;'hplanet'&#93;) == 1) {
        $errorlist &#46;= $lang&#91;'error_planetnum'&#93;;
        $errors++;
    }

    if (!$_POST&#91;'character'&#93;) {
        $errorlist &#46;= $lang&#91;'error_character'&#93;;
        $errors++;
    }

    if (strlen($_POST&#91;'passwrd'&#93;) < 4) {
        $errorlist &#46;= $lang&#91;'error_password'&#93;;
        $errors++;
    }

    if (preg_match("/&#91;^A-z0-9_-&#93;/", $_POST&#91;'character'&#93;) == 1) {
        $errorlist &#46;= $lang&#91;'error_charalpha'&#93;;
        $errors++;
    }

    if ($_POST&#91;'rgt'&#93; != 'on') {
        $errorlist &#46;= $lang&#91;'error_rgt'&#93;;
        $errors++;
    }
    // Le meilleur moyen de voir si un nom d'utilisateur est pris c'est d'essayer de l'appeler !!
    $ExistUser = doquery("SELECT `username` FROM {{table}} WHERE `username` = '" &#46; mysql_escape_string($_POST&#91;'character'&#93;) &#46; "' LIMIT 1;", 'users', true);
    if ($ExistUser) {
        $errorlist &#46;= $lang&#91;'error_userexist'&#93;;
        $errors++;
    }
    // Si l'on verifiait que l'adresse email n'existe pas encore ???
    $ExistMail = doquery("SELECT `email` FROM {{table}} WHERE `email` = '" &#46; mysql_escape_string($_POST&#91;'email'&#93;) &#46; "' LIMIT 1;", 'users', true);
    if ($ExistMail) {
        $errorlist &#46;= $lang&#91;'error_emailexist'&#93;;
        $errors++;
    }

    if ($_POST&#91;'sex'&#93; != '' && $_POST&#91;'sex'&#93; != 'F' && $_POST&#91;'sex'&#93; != 'M') {
        $errorlist &#46;= $lang&#91;'error_sex'&#93;;
        $errors++;
    }

    if ($errors != 0) {
        message ($errorlist, $lang&#91;'Register'&#93;);
    } else {
        $newpass = $_POST&#91;'passwrd'&#93;;
        $UserName = CheckInputStrings ($_POST&#91;'character'&#93;);
        $UserEmail = CheckInputStrings ($_POST&#91;'email'&#93;);
        $UserPlanet = CheckInputStrings (addslashes($_POST&#91;'planet'&#93;));

        $md5newpass = md5($newpass);
        // Creation de l'utilisateur
        $QryInsertUser = "INSERT INTO {{table}} SET ";
        $QryInsertUser &#46;= "`username` = '" &#46; mysql_escape_string(strip_tags($UserName)) &#46; "', ";
        $QryInsertUser &#46;= "`email` = '" &#46; mysql_escape_string($UserEmail) &#46; "', ";
        $QryInsertUser &#46;= "`email_2` = '" &#46; mysql_escape_string($UserEmail) &#46; "', ";
        $QryInsertUser &#46;= "`sex` = '" &#46; mysql_escape_string($_POST&#91;'sex'&#93;) &#46; "', ";
$QryInsertUser &#46;= "`ip_at_reg` = '" &#46; $_SERVER&#91;"REMOTE_ADDR"&#93; &#46; "', ";
        $QryInsertUser &#46;= "`id_planet` = '0', ";
$QryInsertUser &#46;= "`lang`= '"&#46; mysql_escape_string($_POST&#91;'lang'&#93;) &#46; "', ";
        $QryInsertUser &#46;= "`register_time` = '" &#46; time() &#46; "', ";
        $QryInsertUser &#46;= "`password`='" &#46; $md5newpass &#46; "';";
        doquery($QryInsertUser, 'users');
        // On cherche le numero d'enregistrement de l'utilisateur fraichement créé
        $NewUser = doquery("SELECT `id` FROM {{table}} WHERE `username` = '" &#46; mysql_escape_string($_POST&#91;'character'&#93;) &#46; "' LIMIT 1;", 'users', true);
        $iduser = $NewUser&#91;'id'&#93;;
        // Recherche d'une place libre !
        $LastSettedGalaxyPos = $game_config&#91;'LastSettedGalaxyPos'&#93;;
        $LastSettedSystemPos = $game_config&#91;'LastSettedSystemPos'&#93;;
        $LastSettedPlanetPos = $game_config&#91;'LastSettedPlanetPos'&#93;;
        while (!isset($newpos_checked)) {
            for ($Galaxy = $LastSettedGalaxyPos; $Galaxy <= MAX_GALAXY_IN_WORLD; $Galaxy++) {
                for ($System = $LastSettedSystemPos; $System <= MAX_SYSTEM_IN_GALAXY; $System++) {
                    for ($Posit = $LastSettedPlanetPos; $Posit <= 4; $Posit++) {
                        $Planet = round (rand (4, 12));

                        switch ($LastSettedPlanetPos) {
                            case 1&#58;
                                $LastSettedPlanetPos += 1;
                                break;
                            case 2&#58;
                                $LastSettedPlanetPos += 1;
                                break;
                            case 3&#58;
                                if ($LastSettedSystemPos == MAX_SYSTEM_IN_GALAXY) {
                                    $LastSettedGalaxyPos += 1;
                                    $LastSettedSystemPos = 1;
                                    $LastSettedPlanetPos = 1;
                                    break;
                                } else {
                                    $LastSettedPlanetPos = 1;
                                }
                                $LastSettedSystemPos += 1;
                                break;
                        }
                        break;
                    }
                    break;
                }
                break;
            }

            $QrySelectGalaxy = "SELECT * ";
            $QrySelectGalaxy &#46;= "FROM {{table}} ";
            $QrySelectGalaxy &#46;= "WHERE ";
            $QrySelectGalaxy &#46;= "`galaxy` = '" &#46; $Galaxy &#46; "' AND ";
            $QrySelectGalaxy &#46;= "`system` = '" &#46; $System &#46; "' AND ";
            $QrySelectGalaxy &#46;= "`planet` = '" &#46; $Planet &#46; "' ";
            $QrySelectGalaxy &#46;= "LIMIT 1;";
            $GalaxyRow = doquery($QrySelectGalaxy, 'galaxy', true);

            if ($GalaxyRow&#91;"id_planet"&#93; == "0") {
                $newpos_checked = true;
            }

            if (!$GalaxyRow) {
                CreateOnePlanetRecord ($Galaxy, $System, $Planet, $NewUser&#91;'id'&#93;, $UserPlanet, true);
                $newpos_checked = true;
            }
            if ($newpos_checked) {
                doquery("UPDATE {{table}} SET `config_value` = '" &#46; $LastSettedGalaxyPos &#46; "' WHERE `config_name` = 'LastSettedGalaxyPos';", 'config');
                doquery("UPDATE {{table}} SET `config_value` = '" &#46; $LastSettedSystemPos &#46; "' WHERE `config_name` = 'LastSettedSystemPos';", 'config');
                doquery("UPDATE {{table}} SET `config_value` = '" &#46; $LastSettedPlanetPos &#46; "' WHERE `config_name` = 'LastSettedPlanetPos';", 'config');
            }
        }
        // Recherche de la reference de la nouvelle planete (qui est unique normalement !
        $PlanetID = doquery("SELECT `id` FROM {{table}} WHERE `id_owner` = '" &#46; $NewUser&#91;'id'&#93; &#46; "' LIMIT 1;", 'planets', true);
        // Mise a jour de l'enregistrement utilisateur avec les infos de sa planete mere
        $QryUpdateUser = "UPDATE {{table}} SET ";
        $QryUpdateUser &#46;= "`id_planet` = '" &#46; $PlanetID&#91;'id'&#93; &#46; "', ";
        $QryUpdateUser &#46;= "`current_planet` = '" &#46; $PlanetID&#91;'id'&#93; &#46; "', ";
        $QryUpdateUser &#46;= "`galaxy` = '" &#46; $Galaxy &#46; "', ";
        $QryUpdateUser &#46;= "`system` = '" &#46; $System &#46; "', ";
        $QryUpdateUser &#46;= "`planet` = '" &#46; $Planet &#46; "' ";
        $QryUpdateUser &#46;= "WHERE ";
        $QryUpdateUser &#46;= "`id` = '" &#46; $NewUser&#91;'id'&#93; &#46; "' ";
        $QryUpdateUser &#46;= "LIMIT 1;";
        doquery($QryUpdateUser, 'users');
        // Envois d'un message in-game sympa ^^
        $from = $lang&#91;'sender_message_ig'&#93;;
        $sender = "Admin";
        $Subject = $lang&#91;'subject_message_ig'&#93;;
        $message = $lang&#91;'text_message_ig'&#93;;
        SendSimpleMessage($iduser, $sender, $Time, 1, $from, $Subject, $message);

        // Mise a jour du nombre de joueurs inscripts
        doquery("UPDATE {{table}} SET `config_value` = `config_value` + '1' WHERE `config_name` = 'users_amount' LIMIT 1;", 'config');

        $Message = $lang&#91;'thanksforregistry'&#93;;
        if (sendpassemail($_POST&#91;'email'&#93;, "$newpass")) {
            $Message &#46;= " (" &#46; htmlentities($_POST&#91;"email"&#93;) &#46; ")";
        } else {
            $Message &#46;= " (" &#46; htmlentities($_POST&#91;"email"&#93;) &#46; ")";
            $Message &#46;= "<br><br>" &#46; $lang&#91;'error_mailsend'&#93; &#46; " <b>" &#46; $newpass &#46; "</b>";
        }
        message( $Message, $lang&#91;'reg_welldone'&#93;, "login&#46;"&#46;$phpEx );
    }
} else {
    // Afficher le formulaire d'enregistrement
    $parse = $lang;
    $parse&#91;'servername'&#93; = $game_config&#91;'game_name'&#93;;
    $page = parsetemplate(gettemplate('registry_form'), $parse);

    display ($page, $lang&#91;'registry'&#93;, false);
}
// -----------------------------------------------------------------------------------------------------------
// History version
// 1&#46;0 - Version originelle
// 1&#46;1 - Menage + rangement + utilisation fonction de creation planete nouvelle generation
?>

Puis allez dans templates/open game/registry_form.tpl

Et ajoutez ce code ou vous voulez:

<th> Langue du jeu </ th>
<th> <select name="lang">
<option value="en"> Anglais</ option>
<option value="fr"> Français </ option>
</ select> </ th>
</ tr>

Voilà c'est terminé.

mercredi 8 septembre 2010

Mizur Messages : 6618

Yoh

Testé et approuvé?

En tout cas bravo pour ton code, utile et bien sympa! Cool de le partager parmi nous!

En retouchant un peu ton code, on peut rajouter toutes les langues qu'on veut, et on peut meme rajouter un petit quelque chose qui fait que l'admin du jeu peut changer toute la langue du jeu de la meme façon, à tout moment Sympathique tout ça

mercredi 8 septembre 2010

Courroux Messages : 2211

Oui bien sûr je l'ai testé et sa marche

Ah ouais c'est une bonne idée tout ça...

Je vais l'améliorer pour que l'administrateur puisse choisir la langue depuis l'administration et vous le reposter

Sinon, pour changer de lanque pour Xnova (autre que l'anglais et le français), c'est facile, dans templates/open game/registry_form.tpl tu ajoutes:

<th> Langue du jeu </ th>
<th> <select name="lang">
<option value="en"> Anglais</ option>
<option value="fr"> Français </ option>
<option valure="la valeur de la langue">La langue</option>
</ select> </ th>
</ tr>

Voilà

mercredi 8 septembre 2010

trolx Messages : 274

merci beaucoup ça me sera utile en plus très facile !

mercredi 8 septembre 2010

Courroux Messages : 2211

De rien

mercredi 8 septembre 2010

maarhsa Messages : 18

Merci, cela va m'etre très utile.

Je vais donc l'intégré a xgp !

dimanche 21 juillet 2013

Répondre Pour répondre, tu dois d'abord t'inscrire rapidement sur Kommunauty. Rejoins-nous vite !