Visualizzazione risultati 1 fino 23 di 23

Discussione: Più parole trovate dentro un files = Funzione traduci

  1. #1
    Guest

    Predefinito Più parole trovate dentro un files = Funzione traduci

    Salve a tutti,

    Ho deciso di usare questo script "manuale" di traduzione:

    traduci.html:
    Codice HTML:
    <html>
    <head>
    <title>Cerca</title>
    </head>
    <body>
    <form action="cerca.php" method="post">
    <input type="text" name="parola" size="30">
    <input type="submit" name="Cerca">
    </form>
    </body>
    </html>
    traduci.php:
    Codice PHP:
    <html>
    <head>
    <title>Cerca</title>
    </head>
    <body>
    <?
    $trovato
    =false;
    $posizione=0;
    $parola=$_POST['parola'];
    $italiano=file("italiano.txt");
    for(
    $i=0;$i<count($italiano);$i++)
    if (
    trim($italiano[$i])==$parola) {
    $posizione=$i;
    $trovato=true;
    break;
    }
    if (
    $trovato) {
    $inglese=file("inglese.txt");
    $parolatradotta=trim($inglese[$posizione]);
    echo
    $parolatradotta;
    }
    else {
    echo
    "Parola non trovata";
    }
    ?>
    </body>
    e dentro i files italiano.txt e inglese.txt metto le parole in italiano e in inglese e così via per tutte le lingue...
    Ecco, solo che è scocciante, perchè se io nel files metto "ciao" e sotto due righe "come stai?" se io nella input digito "ciao come stai?" la pagina è bianca, perchè uscirebbe solo se io digitassi o "ciao" o "come stai?"
    Io vorrei che se nel files italiano.txt alla prima riga c'è la parola "ciao" e sotto 10 righe "Mario" se io digito "ciao Mario" vorrei che ci fosse comunque la traduzione, così si risparmia un sacco di tempo...
    Inoltre, una volta fatto questo, vorrei sapere come posso "chiamare" il files per fare una sorta di traduzione siti, con le parole del files.
    Grazie mille!

  2. #2
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Se scrivi nella input ciao come stai è normale che ti da la pagina bianca, te con questo codice ricerchi tutta la stringa scritta nell'input in un'unica riga, invece di cercare di tradurre tutta la stringa in input potresti dividerla in spazi, tramite la funzione explode() del php, e applicare il tuo codice su ogni singola stringa, non so se mi sono spiegato?

    Vuoi per caso creare un traduttore, se è cosi non basta sostituire del testo con un'altro, devi tener conto di regole grammaticali di ogni lingua e molto altro, o vuoi per caso fare dell'altro?
    Ultima modifica di sevenjeak : 25-04-2012 alle ore 09.53.02

    Sevenjeak
    Software developer and much more

  3. #3
    Guest

    Predefinito

    No, io voglio fare un traduttore per il mio sito...
    Ho trovato questo script solo che appunto non finirei mai di fare combinazioni di tutte le parole e parole, invece basta scaricarmi un dizionario da internet con tutte le parole e poi tradurle nelle altre lingue con un traduttore già presente, così son sicuro che non sbaglio :)
    Quindi la funzione explode() cosa fa? Prende le parole di tutto il files e le "spezza" a seconda della traduzione?

  4. #4
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Ho postato un link che ti spiega cosa fa la funzione explode(), sa mai cerca su internet, non saprei come spiegarti.

    Se ho ben capito vuoi fare un sito, disponibile in più lingue vero? se si, premetto che io non ho mai fatto una cosa del genere, ma da quello che ho visto e letto su internet i siti tradotti in più lingue spesso utilizzano il metodo adottato da te, non saprei se con un dizionario scaricato da internet funziona, ma potresti provare?
    Ultima modifica di sevenjeak : 25-04-2012 alle ore 10.11.42

    Sevenjeak
    Software developer and much more

  5. #5
    Guest

    Predefinito

    No, funziona, guarda qui: http://talkpluginorange.altervista.org/c.html
    prova "ciao" oppure "come stai" oppure ancora "libro", perchè ho inserito solo queste parole...
    Però, non sarebbe più comodo che se io mettessi ciao come stai? mi darebbe la traduzione? invece se metti ciao come stai? ora legge solo l stringa come hai detto tu, e non traduce tutte le parole del files...
    Per questo ho chiesto aiuto, non ho ben capito come fare però con la funzione explode()
    Ultima modifica di talkpluginorange : 25-04-2012 alle ore 10.23.35

  6. #6
    Guest

    Predefinito

    explode funziona così:

    Codice PHP:
    $str="ciao come stai";
    $arrayStr=explode(" ",$str);
    La variabile $arrayStr diventa un array strutturato in questo modo:
    $arrayStr[0] --> ciao
    $arrayStr[1] --> come
    $arrayStr[2] --> stai

    A te basta usare explode sull'input da tradurre e far eseguire tutti i processi di traduzione all'interno di un ciclo "foreach" rispetto all'array creato.
    Cioè:

    • prendo l'input
    • creo l'array delle parole che lo compone con explode
    • creo un ciclo for che esegua una azione x per ogni elemento dell'array (foreach)
    • l'azione x è l'intero processo da te postato per tradurre


    Il codice completo non te lo posto...devi arrivarci da solo :)
    Ultima modifica di projectFede : 25-04-2012 alle ore 10.39.28

  7. #7
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Io veramente la funzione explode() la userei sulla stringa data in input no sul file, cerca di studiare il miglior modo per fare quello che te vuoi, come di dicevo prima, molti siti utilizzano il metodo che vede qui:

    http://www.tecn.it/gestione-siti-web...b-con-php.html

    Pero qui si utilizza una classe per impostare, e mantenere la traduzione desiderata, non so se fa al caso tuo, in altro modo non saprei che dirti.

    Sevenjeak
    Software developer and much more

  8. #8
    Guest

    Predefinito

    Ho capito, ma una cosa non troppo.
    Come faccio a creare l'array con le parole composte?
    Io non sò quali parole sono visto che ce ne saranno a milialia una volta finito...

  9. #9
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Ti spiega tutto nell'esempio, scrivi nel file di traduzione la frase/palora=traduzione, è lo stesso per le parole composte, almeno che la parola da tradurre non è specificata dall'utente, ma non credo, in questo caso di servirebbe un'altro metodo per tradurla.

    Cmq in quella guida c'è scritto tutto sta a te trovare il miglior modo per fare quello che te vuoi.

    Sevenjeak
    Software developer and much more

  10. #10
    Guest

    Predefinito

    Quindi se non ho capito male... nello script che mi hai indicato se c'è ciao=hello
    e sotto di 10 righe libro=book
    se io metto "hello book"
    me lo traduce? Questo è quel che mi interessa...

  11. #11
    Guest

    Predefinito

    la soluzione è molto più semplice! :)

    aggiorna il codice di traduzione con questo:
    Codice PHP:
    <html>
    <head>
    <title>Cerca</title>
    </head>
    <body>
    <?
    $testo
    =$_POST['parola'];
    $italiano=file("italiano.txt");
    $testoArray=explode(" ",$testo);
    foreach(
    $testoArray as $parola){

    $trovato=false;
    $posizione=0;
    for(
    $i=0;$i<count($italiano);$i++){
    if (
    trim($italiano[$i])==$parola) {
    $posizione=$i;
    $trovato=true;
    break;
    }
    }
    if (
    $trovato) {
    $inglese=file("inglese.txt");
    $parolatradotta=trim($inglese[$posizione]);
    echo
    $parolatradotta." ";
    }
    else {
    echo
    ">\"".$parola."\"=Parola non trovata< ";
    }
    }
    ?>
    </body>
    EDIT IMPORTANTE
    Ho corretto il codice perché mi ero scordato di mettere gli spazi.
    Ultima modifica di projectFede : 25-04-2012 alle ore 11.04.50

  12. #12
    Guest

    Predefinito

    Grazie mille! Siete sempre tutti molto gentili...
    Diciamo che il codice funziona, ma ci deve essere un qualcosa di piccolo che è sbagliato.
    Se metto parole singole come prima traduce (come prima)
    se metto ciao come stai? esce: hello>"come"=Parola non trovata<>"stai?"=Parola non trovata<
    Ci deve essere qualcosa di sbagliato tra testo array e parola?

    EDIT: Se invece metto "ciao libro" esce hellobook, tutto attaccato, qui funziona tutto sommato...
    Ultima modifica di talkpluginorange : 25-04-2012 alle ore 11.06.54

  13. #13
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Non è proprio come dici e solo che lo script associa delle variabile ad una stringa diversa a secondo della lingua scelta dall'utente.

    Dovresti studiarti meglio lo script per capire la cosa

    Sevenjeak
    Software developer and much more

  14. #14
    Guest

    Predefinito

    Io ti ho dato ciò che hai chiesto: una traduzione parola per parola.
    Nel tuo file hai sia ciao che libro...se scrivi nel traduttore ciao libro ti tradurrà come hello book...quindi funziona.

    Il problema che fai notare è colpa tua, perchè hai inserito in un file che dovrebbe avere parole singole una frase! (come stai?).

    Detto questo sappi che non è questo il modo di fare un traduttore...un traduttore è una cosa complicatissima che richiede un mare di lavoro e una grande intelligenza artificiale dietro...non a caso google traduttore nonostante sia di un colosso come google ha anche lui dei problemi a tradurre.

    Se lo stai facendo per tradurre il tuo sito, ti consiglio vivamente di tradurti tu a mano tutti i contenuti e poi dopo se vuoi invece che duplicare le pagine fare uno script php che a seconda della lingua stampa i contenuti esatti.

    P.S.
    Aggiorna il codice che ti ho postato sopra perché l'ho modificato (mi ero dimenticato di mettere gli spazi tra le parole).
    Ultima modifica di projectFede : 25-04-2012 alle ore 11.13.30

  15. #15
    Guest

    Predefinito

    Io ho chiesto parola per parola, ma qui non mi da la traduzione, se io metto libro come stai?
    invece di darmi book how are you? mi da: book>"come"=Parola non trovata<>"stai?"=Parola non trovata<
    aspetta, ora che ci penso... forse dici che funziona se metto ciao (1 parola) come (2° parola) stai? (3° parola)?
    Ultima modifica di talkpluginorange : 25-04-2012 alle ore 11.15.18

  16. #16
    Guest

    Predefinito

    Non capisci qual'è il problema.
    Quante parole ha "libro come stai?" ?? --> 3
    Quante voci ci sono nel tuo file? --> 2!!!! Una per "libro" e una per "come stai?"

    Vedi che non coincidono?
    Lascia stare questo esempio del come stai perchè è una costruzione particolare dell'inglese...fai come ti dico io "ciao libro". Vedrai che funziona!! Perchè infatti le parole che vuoi tradurre sono 2: ciao e libro...entrambe presenti nel file!

    Nel file deve esserci una parola sola per riga...non di più!

  17. #17
    Guest

    Predefinito

    E se io volessi tradurre una frase? Non potrei o si?

  18. #18
    Guest

    Predefinito

    ma stai scherzando? ma capisci quello che scrivo oppure no?

    certo che puoi tradurre una frase...a casa mia una frase è costituita da parole singole. Se tu inserisci nel file tutte le parole singole che compongono la frase allora lo script che ti ho scritto funziona benissimo.

    Esempio: Il gatto è sopra il tavolo

    Inserisci nei due file di traduzione le parole "il", "gatto", "è", "sopra", "tavolo" con la relativa traduzione "the", "cat", "is", "on" ,"table".

    Lancia la traduzione e vedrai che funzionerà! --> the cat is on the table
    Ultima modifica di projectFede : 25-04-2012 alle ore 11.28.24 Motivo: migliorati esempi

  19. #19
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Se devi fare un traduttore che ti traduce parole per parola te lo già detto io e te lo ha ripetuto palprojectFede ora, dovresti fare un traduttore tipo google, che non è una cosa semplice, infatti dovresti tener conto anche delle regole grammaticali delle lingue e altro, per questo ti consiglio le API di google, altrimenti vediti gli altri metodi consigliati qui sopra.

    Se il tuo sito non ha molte pagine potresti creare una versione del sito differente per ogni lingua, come consigliato qui sopra, cosa al cui io non avevo pensato, in alternativa a quel metodo che ti ho postato prima io.

    In ogni caso dovresti studiarti meglio il php è le soluzione postate da noi, scusa se te lo dico, ma se copi e incolli uno script da internet, per quello che vuoi fare te, finisce che non concludi nulla.
    Ultima modifica di sevenjeak : 25-04-2012 alle ore 11.32.46

    Sevenjeak
    Software developer and much more

  20. #20
    Guest

    Predefinito

    Citazione Originalmente inviato da sevenjeak Visualizza messaggio
    per questo ti consiglio le API di google, altrimenti vediti gli altri metodi consigliati qui sopra.
    Esattamente! Le API di google sono molto utili perchè ti consentono di utilizzare i loro servizi integrandoli nel tuo sito.

    Citazione Originalmente inviato da sevenjeak Visualizza messaggio
    In ogni caso dovresti studiarti meglio il php è le soluzione postate da noi, scusa se te lo dico, ma se copi e incolli uno script da internet, per quello che vuoi fare te, finisce che non concludi nulla.
    Copiando uno script già fatto non si capirà mai...devi studiare il linguaggio...partendo dalle basi...e dopo mesi e mesi di studio unendolo con un po' di intuizione personale capirai come fare certe cose

  21. #21
    Guest

    Predefinito

    Si funziona!
    ma pensandoci era la stessa cosa prima, senza la tua modifica basta che mettevo come frase... il cane è sul tavolo e me lo traduceva...
    invece io per guadagnare tempo volevo che se metto a casaccio le parole cane (sotto 10 righe) è sotto 10 righe sul... sotto 10 righe tavolo
    me lo doveva tradurre normalmente... invece mettendo a casaccio me lo mette "table the is on dog"
    il problema è che legge le stringhe, c'è un modo per fare come dico io?

  22. #22
    Guest

    Predefinito

    questa è l'ultima volta che ti rispondo perché sia io che sevenjeak ti abbiamo detto come fare diversamente.

    Comunque sia:

    Prima di tutto come era prima il tuo script non sarebbe riuscito a fare quello che fa ora.
    Secondo: tu puoi mettere le parole sparse quanto ti pare all'interno dei file, ma devono avere una corrispondenza univoca tra file.
    Se tu metti la parola cane nella decima riga del file italiano, sei obbligato (e non puoi fare diversamente) a mettere nella decima riga del file inglese la parola dog! Poi sei libero di mettere cane nella 10°, il nella 21° e tavolo nella 80°, ma nel file inglese le rispettive traduzioni devono essere nella stessa riga!

    Allo stesso tempo però puoi inserire più di una parola nel file inglese: per esempio mettere nella riga 8 del file italiano la parola "sul" e nella riga 8 del file inglese "on the". Questo lo puoi fare...ma non viceversa.
    Ultima modifica di projectFede : 25-04-2012 alle ore 11.50.12

  23. #23
    Guest

    Predefinito

    Ah, si ecco, ho capito... infatti ora va ;)
    Grazie mille!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •