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)
und dies gibt den Text aus
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?!
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?!