Anzeige

Ein kleines Problem

Ein kleines Problem | PSD-Tutorials.de

Erstellt von Sentinal, 18.05.2009.

  1. Sentinal

    Sentinal Certified Web Designer

    Dabei seit:
    10.01.2008
    Beiträge:
    185
    Geschlecht:
    männlich
    Ort:
    Aachen
    Software:
    Adobe PS CS5, Adobe DW CS5, Adobe FW CS5, Adobe Flash CS5, Adobe AI CS5, Adobe ID CS5
    Ein kleines Problem
    Hallihallo.

    Ich habe ein kleines Problemchen.
    Und zwar will ich eine Website übersetzen.

    folgende sprachen sollten zur verfügung stehen:
    - Deutsch
    - Englisch
    (Die website selber ist in deutsch)

    Jezt kommen wir zum Hauptproblem.

    Der Seiteninhalt wird in einer SQL Datenbank gespeichert.
    Der Deutsche Text in der Tabelle sites > content und der englische teil in sites > content_en .

    Jezt soll mittels onlinetranslator der deutsche teil in englisch übersezt werden. Ein dementsprechendes Tool habe ich schon. Dies nennt sich "Google PHP API". Dies sendet den Text mittels PHP-HTTP Request an google und mittels file_get_contents(); wird das "übersezte" in der Seite eingebunden.

    Jezt entsteht bei file_get_contents(); ein Fehler, was auch immer das für ein Fehler ist.
    Ich denkemal das liegt an den HTML Tags, diese habe ich mittels str_replace(); auch schon gechanged, aber das Problem besteht immernoch.

    hier ist das Script: (api.php)
    Code (Text):
    1. <?php
    2. class Google_Translate_API {
    3.  
    4.         function  translate($text, $from = '', $to = 'en') {
    5.                 // Der Text wird  per GET an die URL weitergegeben, hier tritt ein Fehler auf da wahrscheinlich  HTML Tags stören ...
    6.                 $url =  'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q='.rawurlencode($text).'&langpair='.rawurlencode($from.'|'.$to);
    7.                  $response = file_get_contents(
    8.                          $url,
    9.                         null,
    10.                          stream_context_create(
    11.                                  array(
    12.                                          'http'=>array(
    13.                                          'method'=>"GET",
    14.                                          'header'=>"Referer:  http://".$_SERVER['HTTP_HOST']."/\r\n"
    15.                                          )
    16.                                 )
    17.                          )
    18.                 );
    19.                 if  (preg_match("/{\"translatedText\":\"([^\"]+)\"/i", $response, $matches))  {
    20.                         return  self::_unescapeUTF8EscapeSeq($matches[1]);
    21.                  }
    22.                 return false;
    23.         }
    24.        
    25.         function  __unescapeUTF8EscapeSeq($str) {
    26.                 return  preg_replace_callback("/\\\u([0-9a-f]{4})/i", create_function('$matches',  'return html_entity_decode(\'&#x\'.$matches[1].\';\', ENT_NOQUOTES,  \'UTF-8\');'), $str);
    27.         }
    28.        
    29.         function  _unescapeUTF8EscapeSeq($str) {
    30.                 return  preg_replace_callback("/\\\u([0-9a-f]{4})/i", create_function('$matches',  'return Google_Translate_API::_bin2utf8(hexdec($matches[1]));'),  $str);
    31.         }
    32.        
    33.         function _bin2utf8($bin)  {
    34.                 if ($bin <= 0x7F) {
    35.                         return  chr($bin);
    36.                 } else if ($bin >= 0x80 && $bin <=  0x7FF) {
    37.                         return pack("C*", 0xC0 | $bin >> 6,  0x80 | $bin & 0x3F);
    38.                 } else if ($bin >= 0x800  && $bin <= 0xFFF) {
    39.                         return pack("C*",  11100000 | $bin >> 11, 0x80 | $bin >> 6 & 0x3F, 0x80 | $bin  & 0x3F);
    40.                 } else if ($bin >= 0x10000 && $bin  <= 0x10FFFF) {
    41.                         return pack("C*", 11100000 | $bin  >> 17, 0x80 | $bin >> 12 & 0x3F, 0x80 | $bin >> 6&  0x3F, 0x80 | $bin & 0x3F);
    42.                 }
    43.         }
    44.          
    45. }
    46. ?>
    und dies gibt den Text aus
    Code (Text):
    1. <?php
    2. require_once('api.php');
    3.  
    4. // der text, der übresezt  werden soll ($text wäre $row['content'], also der text aus der  datenbank)
    5. $text = 'Hallo, ich bin ein Text und komme normalerweise aus der  Datenbank.';
    6. $trans_text = Google_Translate_API::translate($text, 'de',  'en'); // von deutsch nach english
    7. if ($trans_text !== false) {
    8.          echo $trans_text;
    9. }
    10. ?>
    1. Was mache ich hierbei Falsch?
    2. bei dem HTTP request funktioniert nur GET und leider kein POST, sonst würde das Problem denke ich mal nicht mehr existieren.
    3. Was für Tools benuzt ihr um Dynamischen Text (der sich dauernd ändern kann) zu übersetzen? oder macht ihr das alles manuell?!
     
    #1      
  2. netbandit

    netbandit Aktives Mitglied

    12
    Dabei seit:
    18.05.2008
    Beiträge:
    1.145
    Geschlecht:
    männlich
    Ein kleines Problem
    AW: Ein kleines Problem

    Bei mir kein Fehler; Verrätst Du uns, welchen Fehler Du erhälst?

    Edit: Kommen aus der DB auch Html-Tags?
     
    Zuletzt bearbeitet: 18.05.2009
    #2      
  3. Sentinal

    Sentinal Certified Web Designer

    Dabei seit:
    10.01.2008
    Beiträge:
    185
    Geschlecht:
    männlich
    Ort:
    Aachen
    Software:
    Adobe PS CS5, Adobe DW CS5, Adobe FW CS5, Adobe Flash CS5, Adobe AI CS5, Adobe ID CS5
    Ein kleines Problem
    AW: Ein kleines Problem

    Ja in der Datenbank sind HTML Tags.
     
    #3      
  4. netbandit

    netbandit Aktives Mitglied

    12
    Dabei seit:
    18.05.2008
    Beiträge:
    1.145
    Geschlecht:
    männlich
    Ein kleines Problem
    AW: Ein kleines Problem

    Und die möchtest Du für die englische/übersetzte Ausgabe erhalten?
     
    #4      
  5. Sentinal

    Sentinal Certified Web Designer

    Dabei seit:
    10.01.2008
    Beiträge:
    185
    Geschlecht:
    männlich
    Ort:
    Aachen
    Software:
    Adobe PS CS5, Adobe DW CS5, Adobe FW CS5, Adobe Flash CS5, Adobe AI CS5, Adobe ID CS5
    Ein kleines Problem
    AW: Ein kleines Problem

    Nein die sollen eigentlich normal beibehalten werden, Nur der Text soll übersetzt werden.
     
    #5      
  6. netbandit

    netbandit Aktives Mitglied

    12
    Dabei seit:
    18.05.2008
    Beiträge:
    1.145
    Geschlecht:
    männlich
    Ein kleines Problem
    AW: Ein kleines Problem

    Also:

    PHP:
    1.  
    2. <?php
    3. require_once('api.php');
    4.  
    5. // der text, der übresezt  werden soll ($text wäre $row['content'], also der text aus der  datenbank)
    6. $text = 'Hallo, ich bin ein Text und komme <strong>normalerweise</strong> aus der  Datenbank.';
    7. $trans_text = Google_Translate_API::translate($text, 'de',  'en'); // von deutsch nach english
    8. if ($trans_text !== false) {
    9.          echo $trans_text;
    10. }
    11. ?>
    12.  
    soll

    bzw

    HTML:
    1.  
    2. Hello, I'm a text and <strong>usually</strong> come from the database.
    3.  
    ergeben?
     
    #6      
  7. Sentinal

    Sentinal Certified Web Designer

    Dabei seit:
    10.01.2008
    Beiträge:
    185
    Geschlecht:
    männlich
    Ort:
    Aachen
    Software:
    Adobe PS CS5, Adobe DW CS5, Adobe FW CS5, Adobe Flash CS5, Adobe AI CS5, Adobe ID CS5
    Ein kleines Problem
    AW: Ein kleines Problem

    Ja zum beispiel sollte es so sein.
     
    #7      
  8. netbandit

    netbandit Aktives Mitglied

    12
    Dabei seit:
    18.05.2008
    Beiträge:
    1.145
    Geschlecht:
    männlich
    Ein kleines Problem
    AW: Ein kleines Problem

    Soooo klein ist das Problem dann aber doch nicht :D

    Also ich denke das müsste dann irgendwie über preg_replace und Modi e gelöst werden und vor allem schon so vorher in die DB gespeichert werden (erst bei Ausgabe wird dem Server auf Dauer bestimmt zuviel)?! Ist mir zu kompliziert, sorry.
     
    Zuletzt bearbeitet: 18.05.2009
    #8      
  9. counteam

    counteam Guest

    Ein kleines Problem
    AW: Ein kleines Problem

    <?php
    require_once('api.php');


    $sql = "SELECT * FROM sites WHERE site_id='1' LIMIT 1";
    $query = mysql_query($sql);
    $row = mysql_fetch_array($query);

    /*
    $row['content'] hat als beispiel folgenden Inhalt:

    # Willkommen auf meiner Seite.
    # <span class="text1">Testtext</span>
    # <p class="sonstiges"> Keine AHnung ...</p>
    */

    $text =
    $row['content'];
    $trans_text = Google_Translate_API::translate($text, 'de', 'en'); // von deutsch nach english
    if($trans_text !== false)
    echo
    $trans_text;
    }
    ?>

    Hierbei entsteht ein Fehler vin file_get_contents();

    Da
    $row['content']; über der URL angehängt wird und html TAGS bzw diverse Zeichen wie "=" oder """ oder "'" verwendet werden wird dort ein Fehler ausgegeben.

    Habs schon via str_replace versucht die HTML Tags zu ersezten, aber der Fehler tretet immernoch auf ...
     
    #9      
x
×
×