Antworten auf deine Fragen:
Neues Thema erstellen

Ein kleines Problem

Sentinal

Certified Web Designer

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:
<?php
class Google_Translate_API {

        function  translate($text, $from = '', $to = 'en') {
                // Der Text wird  per GET an die URL weitergegeben, hier tritt ein Fehler auf da wahrscheinlich  HTML Tags stören ...
                $url =  'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q='.rawurlencode($text).'&langpair='.rawurlencode($from.'|'.$to);
                 $response = file_get_contents(
                         $url,
                        null,
                         stream_context_create(
                                 array(
                                         'http'=>array(
                                         'method'=>"GET",
                                         'header'=>"Referer:  http://".$_SERVER['HTTP_HOST']."/\r\n"
                                         )
                                )
                         )
                );
                if  (preg_match("/{\"translatedText\":\"([^\"]+)\"/i", $response, $matches))  {
                        return  self::_unescapeUTF8EscapeSeq($matches[1]);
                 }
                return false;
        }
        
        function  __unescapeUTF8EscapeSeq($str) {
                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);
        }
        
        function  _unescapeUTF8EscapeSeq($str) {
                return  preg_replace_callback("/\\\u([0-9a-f]{4})/i", create_function('$matches',  'return Google_Translate_API::_bin2utf8(hexdec($matches[1]));'),  $str);
        }
        
        function _bin2utf8($bin)  {
                if ($bin <= 0x7F) {
                        return  chr($bin);
                } else if ($bin >= 0x80 && $bin <=  0x7FF) {
                        return pack("C*", 0xC0 | $bin >> 6,  0x80 | $bin & 0x3F);
                } else if ($bin >= 0x800  && $bin <= 0xFFF) {
                        return pack("C*",  11100000 | $bin >> 11, 0x80 | $bin >> 6 & 0x3F, 0x80 | $bin  & 0x3F);
                } else if ($bin >= 0x10000 && $bin  <= 0x10FFFF) {
                        return pack("C*", 11100000 | $bin  >> 17, 0x80 | $bin >> 12 & 0x3F, 0x80 | $bin >> 6&  0x3F, 0x80 | $bin & 0x3F);
                }
        }
         
}
?>

und dies gibt den Text aus
Code:
<?php
require_once('api.php');

// der text, der übresezt  werden soll ($text wäre $row['content'], also der text aus der  datenbank)
$text = 'Hallo, ich bin ein Text und komme normalerweise aus der  Datenbank.';
$trans_text = Google_Translate_API::translate($text, 'de',  'en'); // von deutsch nach english
if ($trans_text !== false) {
         echo $trans_text;
}
?>

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?!
 

netbandit

Aktives Mitglied

AW: Ein kleines Problem

Also:

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

// der text, der übresezt  werden soll ($text wäre $row['content'], also der text aus der  datenbank)
$text = 'Hallo, ich bin ein Text und komme <strong>normalerweise</strong> aus der  Datenbank.';
$trans_text = Google_Translate_API::translate($text, 'de',  'en'); // von deutsch nach english
if ($trans_text !== false) {
         echo $trans_text;
}
?>

soll

Hello, I'm a text and usually come from the database.

bzw

HTML:
Hello, I'm a text and <strong>usually</strong> come from the database.

ergeben?
 

netbandit

Aktives Mitglied

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:
C

counteam

Guest

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 ...
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben