Sistema di traduzione.

Ciao, devo implementare un sistema di traduzione in un sito già realizzato, tutto il codice html di ogni pagina viene inserito in una variabile che a fine pagina viene stampata a video.

Cosa mi consigliate di fare ?

Ho dato una letta alla classe pear translation2 però non riesco a trovare molte informazioni, esiste qualche altro script pronto da poter implementare a cui dare in pasto il codice html generato e lui mi estrae solamente i testi ?

:-)

inviato 10 anni fa
Lokki
X 0 X

Ciao, devo implementare un sistema di traduzione in un sito già realizzato, tutto il codice html di ogni pagina viene inserito in una variabile che a fine pagina viene stampata a video.

Cosa mi consigliate di fare ?

Se devi fare un sito multilanguage, potresti creare + file php a seconda di quante traduzioni dovrai fare, suponiamo solo italiano e inglese, potresti creare:

lang_ita.php

$WORD['hello'] = "ciao";

$WORD['how_are_you'] = "come stai";

lang_eng.php

$WORD['hello'] = "hello";

$WORD['how_are_you'] = "how are you";

Nel sito a seconda della lingua che selezionerai , includerai il file della lingua che ti serve, così avrai a disposizione l'array $WORD con tutti i valori nella lingua che ti serve...

Almeno questa è la prima idea che mi viene in mente, potresti farlo anche con il supporto del DB, ma forse rallenterebbe un po' troppo nel caso di estrazioni di un numero elevato di testi...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Grazie per l'idea  :)

Sono riuscito a configuarre la classe Translate2 di PEAR e devo dire che è ben strutturata, il problema però è prorpio il filtro che legge l'html.

Ho fatto questa cosa qua:

<?php
function output($text){
   global $db;
   $text=trim(addslashes($text));
   for ($oc = 0;$oc < strlen($text);$oc++) {
      if(substr($text,$oc,1)=='<')$count_a+=1;
      if(substr($text,$oc,1)=='>')$count_c+=1;
   }
   //echo $count_a." ".$count_c;
   if($count_a==$count_c){
      for ($oc = 0;$oc <= $count_a;$oc++) {
         $text=trim($text);
         //echo "<br>".htmlspecialchars($text);
         $pos =strpos($text,"<");
         //echo "<br>".strpos($text,"<");
         if($pos==0){
            $pos2=strpos($text,">");
            $new_text.=substr($text,0,($pos2+1));
            $text= substr($text,($pos2+1));
         }else{
            $oc--;
            $word=substr($text,0,($pos));
            if($word !='' AND $word !=' ' AND $word !='\n' AND $word){
               //$words[] = $word;
               $sql="select * from text where original='".$word."' limit 1";
               $result = $db->query($sql);
               $row = $db->fetchrow($result);
               if(!$row[original]){
                  //$word=addslashes($word);
                  $sql = "insert into text (original) values ('".$word."')";
                  mysql_query( $sql ) or die( "Could not register.<br>$sql" );
                  $result = mysql_query("select * from text where original='".$word."'");
                  $row = mysql_fetch_row($result);
               }
               if($row[italian]){
                  $word=$row[italian];
               }
            }
            $new_text.=stripslashes($word);
            $text= substr($text,($pos));
         }
         //echo$oc;
      }
      //echo "<br><br>";
      //print_r($words);
   }else{
      //comunicare errore nel calcolo tag all'admin
      $new_text.=stripslashes($text);
   }
   //echo "<br>".htmlspecialchars($new_text);
   return stripslashes($new_text);
}
?>

Le parti commentate servono per fare dei test.

In sostanza questa funzione legge una stringa che contiene del codice html, separa tag dalle stringe e mette quest'ultime in un DB.

Solo che da alcuni problemi :

molto lento

perdo i testi contenuti all'interno dei tag tipo i value nei campi imput.

Nessuno conosce un parser che fa questa cosa un po meglio del mio ?

Grazie  ::)

risposto 10 anni fa
Lokki
X 0 X

Ciao,

sto provando ad utilizzare Translate2 di PEAR.

Ho installato tutto a riga di comando, la cartella translate2 si trova in pear, sotto php.

ho inserito i path nell'ini di php.

I progetti stanno nell'htdocs nel path di apacha2. 

Ma purtroppo ogni volta che provo a chiamare translate2, ottengo

Warning: require_once(Traslation2\Translation2.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\try.phpon line 3

Fatal error: require_once() [function.require]: Failed opening required 'Traslation2\Translation2.php' (include_path='.;C:\php\PEAR; ; PHP's default setting for include_path is .') in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\try.php on line 3

al rigo 3 del try.php c'è " require_once 'Traslation2\Translation2.php'; "

Hai qualche suggerimento da darmi?

grazie in anticipo

risposto 4 anni fa
roxy
roxy
3
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda