J'essaie de traduire un texte / paragraphe de sa version anglaise originale à Valley Girl Talk. Ainsi, par exemple, "salut" sera "hellloooooo, qu'est-ce qui se passe?". Les mots ont été entrés dans une base de données avec le mot anglais et sa version traduite de Valley Girl. Exemple: colonne anglaise-> salut, colonne VG-> hellloooooo, anglais-> oui, VG -> comme, enfers oui

J'utilise MySQL pour obtenir les mots traduits de la base de données et retourner un json.

Voici donc comment je le récupère dans AJAX:

$.ajax({
    type: "GET",
    url: "dictionary.php",
    success: function(data) {
        var json = JSON.parse(data);
        // replacing all the ing's with in'
        $("#textarea").each(function(){
            var ing = $(this).val().replace(/ing/g,"in'");
            $(this).val(ing);
            // finding the English words and replacing with VG 
            $.each(json, function(idx, obj) {
                var vg= $("#content").val().replace(/obj.english/g, obj.vg);
                $("#textarea").val(vg);
            );
        });                 
    }
});

J'ai bien réussi les remplacements «ing» et je travaille mais essayer de remplacer les mots de la fille de la vallée est un non. Suis-je en boucle à travers les objets json de manière incorrecte?

EDIT: voici les données json

[{"english":"hi","0":"hi","vg":"hellloooooo!","1":"hellloooooo"},    {"english":"yes","0":"yes","vg":"like, hells yes","1":"like, hells yes"},.....]
0
Noobtastic 7 mars 2016 à 00:31

3 réponses

Meilleure réponse

Veuillez voir ce petit exemple de remplacement des mots, puis de sortie dans un nouveau champ, cela peut vous aider avec ce que vous voulez réaliser.

Il passe sur chaque mot et recherche une correspondance exacte des mots, vous pouvez rencontrer des problèmes si certaines des traductions contiennent également des mots en anglais

$(document).ready(function(){
  
 var json = [{"english":"hi","0":"hi","vg":"hellloooooo!","1":"hellloooooo"},    {"english":"yes","0":"yes","vg":"like, hells yes","1":"like, hells yes"}];

var userInput = $('#textarea').val();

json.forEach(function(word){
  console.log(word);
  userInput = userInput.replace(new RegExp("\\b"+word.english+"\\b","g"),word.vg);
});
  $('#translation').val(userInput);
});
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <textarea id="textarea">
    hi this is a test of yes translation. hi yes
  </textarea>
  <textarea id="translation">
  
  </textarea>
  </body>
</html>
0
user2950720 6 mars 2016 à 22:01

Votre code semble contenir plusieurs erreurs logiques. Vous êtes en boucle sur une sélection jQuery où un identifiant est utilisé? Un identifiant est toujours traité comme unique, peu importe ce que vous faites, c'est pourquoi il s'appelle id :) Ensuite, vous remplacez la valeur de l'élément html à chaque fois (ce qui se produit une seule fois dans ce cas, mais c'est une erreur de votre part I présumer).

0
purpleninja 6 mars 2016 à 21:47

J'ai un peu changé votre code html pour que votre code fonctionne correctement.

HTML:

<textarea class="text">
            hi this is a text area what  is going on? hi how are you? yes, I am fine.
</textarea>

<textarea class="text">
            hi this is a text area what is going on? hi how are you? yes, I am fine.
</textarea>

JavaScript / JQuery:

$.ajax({
            url: "dictionary.php",
            type:"GET",
            success: function(data) {

            //store the parsed json
            var json = JSON.parse(data);                 


         //loop through the .text elements
        $(".text").each(function(){//begin outer each

            //reference the current object
            var that = $(this);

            //replace the all of the ing's with in'
            var ing = $(this).val().replace(/ing/g,"in'");

            $(this).val(ing);

            // finding the English words and replacing with VG 
            $.each(json, function(idx, obj) {//begin inner each

                //Create a new regular expression that matches the word only.
                var regExp = new RegExp("\\b" + obj.english,"g");

                //Replace the value of the text value with the vg value and store it.
                var vg = that.val().replace(regExp, obj.vg);

                //Replace the value of the .text text area in the dom.
                that.val(vg);


            });//<-- was missing a closing } bracket. //end inner each

        });//end outer each    


            }
});
0
Larry Lane 6 mars 2016 à 23:14