JeuWeb - Crée ton jeu par navigateur
traducteur - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : traducteur (/showthread.php?tid=789)

Pages : 1 2


RE: traducteur - icien - 11-02-2007

j'ai un script de langue qui était utilisé pour NeverWinterNight si ca t'intéresse,
il traduisait en un semblant de nain et elfe.
Exemple:
un nain parle a un nain, les deux nains voient le texte ecrit en francais et si un humain ne parlant pas le nain passe il entendra(lira) une traduction ressemblant a du nain (donc incompréhensible) du texte francais.

Je pense que c'est facilement adaptable en php. Je te le donne si tu veux.


RE: traducteur - Sephi-Chan - 11-02-2007

Personnellement, je suis très intéressé par toute piste et je te serais reconnaissant de m'en dire plus Smile.
Comment cela se présente-t-il ?


Sephi-Chan


RE: traducteur - icien - 11-02-2007

voici un exemple pour donner une traduction Type nain (je rappelle que c'est du script NWN facilement convertible en PHP)
on appelle la fonction avec chaque lettre du texte a traduire si celui qui l'entend ne dois pas le comprendre.
Code :
string ConvertDwarf(string sLetter)
{
    string sTranslate = sLetter;
    if (GetStringLength(sLetter) > 1)
        sLetter = GetStringLeft(sLetter, 1);
    if (sLetter == "a") return "az";
    if (sLetter == "A") return "Az";
    if (sLetter == "b") return "po";
    if (sLetter == "B") return "Po";
    if (sLetter == "c") return "zi";
    if (sLetter == "C") return "Zi";
    if (GetStringLowerCase(sLetter) == "d") sTranslate = "t";
    if (GetStringLowerCase(sLetter) == "e") sTranslate = "a";
    if (sLetter == "f") return "wa";
    if (sLetter == "F") return "Wa";
    if (GetStringLowerCase(sLetter) == "g") sTranslate = "k";
    if (GetStringLowerCase(sLetter) == "h") sTranslate = "'";
    if (GetStringLowerCase(sLetter) == "i") sTranslate = "a";
    if (sLetter == "j") return "dr";
    if (sLetter == "J") return "Dr";
    if (GetStringLowerCase(sLetter) == "k") sTranslate = "g";
    if (GetStringLowerCase(sLetter) == "l") sTranslate = "n";
    if (GetStringLowerCase(sLetter) == "m") sTranslate = "l";
    if (GetStringLowerCase(sLetter) == "n") sTranslate = "r";
    if (sLetter == "o") return "ur";
    if (sLetter == "O") return "Ur";
    if (sLetter == "p") return "rh";
    if (sLetter == "P") return "Rh";
    if (GetStringLowerCase(sLetter) == "q") sTranslate = "k";
    if (GetStringLowerCase(sLetter) == "r") sTranslate = "h";
    if (sLetter == "s") return "th";
    if (sLetter == "S") return "Th";
    if (GetStringLowerCase(sLetter) == "t") sTranslate = "k";
    if (GetStringLowerCase(sLetter) == "u") sTranslate = "'";
    if (GetStringLowerCase(sLetter) == "v") sTranslate = "g";
    if (sLetter == "w") return "zh";
    if (sLetter == "W") return "Zh";
    if (GetStringLowerCase(sLetter) == "x") sTranslate = "q";
    if (GetStringLowerCase(sLetter) == "y") sTranslate = "o";
    if (GetStringLowerCase(sLetter) == "z") sTranslate = "j";
    if (GetStringLength(sTranslate) == 1 && GetStringUpperCase(sLetter) == sLetter)
        sTranslate = GetStringUpperCase(sTranslate);
    return sTranslate;
}//end ConvertDwarf

Ca a en plus le merite de ne pas être franchement réversible.
j'ai la meme chose pour du simili elfe, Gnome, Halfling, Orc, Goblin, Draconic, Celestial, Abyssal, Infernal


RE: traducteur - Sephi-Chan - 11-02-2007

Merci bien, Icien.

Je vais essayer de comprendre un peu le mécnisme pour le restituer en PHP.

Par contre, et je m'adresse la à Gtsoul, comptes-tu faire un système avec plusieurs niveaux de compréhension de langue ou bien un système binaire (Oui je comprends, Non je comprends pas) ?

Car avec un système irréversible, il serait très délicat de mettre en place ces niveaux de compréhension.

A moins de faire un système d'indice, qui détermine la quantité de caractères retirés/remplacés de manière à ce qu'une personne ayant presque atteint la maîtrise d'une langue puisse comprendre un peu plus qu'un novice total.


Sephi-Chan


RE: traducteur - Seren - 11-02-2007

Sephi-Chan a écrit :Merci bien, Icien.

Je vais essayer de comprendre un peu le mécnisme pour le restituer en PHP.

Par contre, et je m'adresse la à Gtsoul, comptes-tu faire un système avec plusieurs niveaux de compréhension de langue ou bien un système binaire (Oui je comprends, Non je comprends pas) ?

Car avec un système irréversible, il serait très délicat de mettre en place ces niveaux de compréhension.

A moins de faire un système d'indice, qui détermine la quantité de caractères retirés/remplacés de manière à ce qu'une personne ayant presque atteint la maîtrise d'une langue puisse comprendre un peu plus qu'un novice total.


Sephi-Chan

Pour un système non binaire tu peux découper ton texte et choisir de "brouiller" une ligne sur deux ou un mot sur trois. A toi de voir le rendu que ça donne pour ajuster les paramètres.

Avec la fonction explode et le caractère espace comme délimiteur c'est facile de récuper les mots.


RE: traducteur - gtsoul - 12-02-2007

J'ai 4 langues et 3 niveaux de compréhesion.
Le joueur peut lire (les balises de langue), écrire (utiliser des balises de langue) ou parler à l'oral.
La compréhension ou non d'un passage est booléenne, c'est déjà assez compliqué comme ça et puis cela risquerait de décourager son emploi.
J'utilise des regex, et notamment preg_replace($tableau_de_motif, $tableau_de_remplacement)


RE: traducteur - nemesis_elite - 18-03-2007

Ce sujet data un peu, c'est pourquoi je le remet au goût du jour.

J'ai creer une fonction qui brouille du texte. J'aimerai votre avis.
Code PHP :
<?php 
function brouille($text){

// Initialisation des varirables.
$i = 0;
$nb = strlen($text);
$new = '';
$lettres = array(
' ' => ' ',
'a' => 'az',
'A' => 'Az',
'b' => 'po',
'B' => 'Po',
'c' => 'zi',
'C' => 'Zi',
'd' => 't',
'D' => 'T',
'e' => 'a',
'E' => 'A',
'f' => 'wa',
'F' => 'Wa',
'g' => 'k',
'G' => 'K',
'h' => '\'',
'H' => '\'',
'i' => 'a',
'I' => 'A',
'j' => 'dr',
'J' => 'Dr',
'k' => 'g',
'K' => 'G',
'l' => 'm',
'L' => 'M',
'm' => 'n',
'M' => 'N',
'n' => 'r',
'N' => 'R',
'o' => 'ur',
'O' => 'Ur',
'p' => 'rh',
'P' => 'Rh',
'q' => 'k',
'Q' => 'K',
'r' => 'h',
'R' => 'H',
's' => 'th',
'S' => 'Th',
't' => 'k',
'T' => 'K',
'u' => '\'',
'U' => '\'',
'v' => 'g',
'V' => 'G',
'w' => 'zh',
'W' => 'Zh',
'x' => 'q',
'X' => 'Q',
'y' => 'o',
'Y' => 'O',
'z' => 'j',
'Z' => 'J',
'\'' => ' ',
'?' => '?',
',' => ',',
'!' => '!'
);
// On remplace
while($i < $nb){
foreach(
$lettres as $key => $value){ // Boucle
if($text[$i]==$key){$new.=$value;}
}
$i++;
}
return
$new;
}



RE: traducteur - Chewbacca - 18-03-2007

y'a ptetre la possibilité defaire jouer le hasrad là dedans, du genre en mettant plusieurs possbilités pour chaque lettre, et ensuite tu affectes à cet array un mt_rand pour savoir quelle possibilité afficher
ensuite, tu corses le tout avec un script qui efface partiellement et aléatoirement des parties du message, ça doit aussi être possible avec mt_rand


RE: traducteur - Plume - 19-03-2007

Le hasard ne devrait pas intervenir là-dedans. Quand tu dis quelque chose, même si l'autre ne comprend & que tu te répètes, il est inconcevable que ça prenne une sonorité différente. Et puis ça permet aux joueurs de se faire traducteurs & peut être être capable de lire l'elfique ^^