WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik


Homepage und Webhosting-Forum

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.


Forum » PHP & MySQL » Daten aus JavaScript(JS) in PHP Nutzen (Google API) » Antworten
Benutzername:
Passwort: Passwort vergessen?
Inhalt der Nachricht: Fett | Kursiv | Unterstrichen | Link | Bild | Smiley | Zitat | Zentriert | Quellcode| Kleiner Text

-

[/code] Das Funktioniert auch soweit. Nun will ich aber mit dem übersetzten Text weiterarbeit. (z.B. per Email versenden, in einer Datenbank ablegen, etc). Ich kann aber leider nur PHP. Das Google Script ist halt aber leider in JS, dessen ich keinen Meter weit mächtig bin. Was mir helfen würde, wäre wenn es möglich wäre irgendwie den übersetzten Text (der ja in dem vorhandenen Script in einen

-Tag geschrieben wird) in eine php Variable zu bringen. Ist sowas irgendwie möglich? Wenn ja: wie? Was mir unter Umständen auch vielleicht schon helfen würde, wäre wenn es möglich ist den übersetzten Text irgendwie statt in den

-Tag in eine

Optionen: Emailbenachrichtigung bei Antworten
 

Die letzten 5 Postings in diesem Thema » Alle anzeigen
von topse611
Hallo Ori,

danke. Du hast mir sehr geholfen. Es funktioniert so wie du es erläutert hast.

ps.: Der html Code war nicht von mir. Den hab ich so vorgesetzt bekommen und da er anstandslos funktioniert hat habe ich ihn auch nicht verändert. Aber du hast recht... sauber ist anders. Werd deine Anmerkungen Umsetzen.

Also nochmal: Danke !

Gruß Topse
von Ori
Zum JavaScript:
Ich kenne den Googlekram nicht (und lege auch keinen Wert darauf). Geraten wäre es etwa so:
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16:
<script type="text/javascript">
// <![CDATA[
google.load("language", "1");
function gtrans(f) {
  document.getElementById("translation").value = "-";
  var lang = f.langpair.value.split("|");
  google.language.translate(f.translate.value, lang[0], lang[1], function (result) {
    if (!result.error) {
      var t = document.getElementById("translation");
      t.value = result.translation;
      t.form.submit();
    }
  });
}
// ]]>
</script>


Das Formular muss auch noch ein wenig angepasst werden:
1: 
2: 
3: 
4: 
5: 
6:
<form action="..." method="post">
...
<button type="button" onclick="gtrans(this.form);">Translate</button>
...
<textarea name="translation" id="translation" ...></textarea>
</form>



Zur Erklärung: Wenn du das Formular abschickst, können die per JavaScript übersetzten Dinge ganz normal aus $_POST ausgelesen werden. Zum Verstehen des JavaScript-Anteils genügt eine halbe Stunde SelfHTML; die Syntax ähnelt PHP ja ein wenig.
Die fertige Übersetzung wird, sobald Google die Drecksarbeit erledigt hat, in das Element mit id="translation" gesteckt. Das ist bei dir noch eine <textarea>, wird aber üblicherweise als <input type="hidden" /> implementiert. (Ersteres macht Sinn, wenn die via <form action=""> aufgerufene Seite den HTTP-Statuscode 204 No Content zurückliefert. letzteres, wenn die Seite eine neue generiert.)


Abgesehen davon hat der HTML-Code etliche Schnitzer.
Das Attribut language für <script> ist überflüssig. Benutz stattdessen entweder type="text/javascript" (eigentlich vorgeschrieben) oder lass es ganz weg (HTML 5 erlaubt das). Du musst > kodieren, wenn es nicht zu einem Tag gehört. Es muss dann als &gt; geschrieben werden. Das gleiche gilt für ", es muss &quot geschrieben werden.
JavaScript muss für XHTML in <![CDATA[ ]]> geschachtelt werden (idealerweise mit // auskommentiert - alte Browser kommen damit sonst nicht klar). Für Ereignisse (on...) ist kein "javascript:"-Vorspann nötig, den braucht man nur bei Urls (also z.B. in href="").

Unterm Strich: „Ich kann aber leider nur PHP.“ Besser wär’s, du könntest auch HTML.
von TeX
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>T-Systems Secure Translation</title>
<script language="javascript" src="http://www.google.com/jsapi"></script>
<script language="javascript">
 google.load ("language", "1");
 function gtrans (f) {
  document.getElementById("translation").value = "-";
  var lang = f.langpair.value.split("|");
  google.language.translate (f.translate.value, lang[0], lang[1], function (result) {
   if (!result.error) {
    var container = document.getElementById("translation").value = result.translation;
   }
  });
  return false;
 }
</script>
</head>

<body>
<form onsubmit="return false">
 <p>Enter text to translate and click "Translate"</p>
 <textarea name="translate" cols="50" rows="5"></TEXTAREA>
 <br />
 <select name="langpair">
  <option value="en|fr">English -> French</option>
  <option value="en|de">English -> German</option>
  <option value="fr|en">French -> English</option>
  <option value="fr|de">French -> German</option>
  <option value="de|en">German -> English</option>
  <option value="de|fr">German -> French</option>
 </select>
 <input type="button" value="Translate" onclick="javascript:gtrans(this.form)" />
 <br /><br />
 <textarea id="translation" cols="50" rows="5"></TEXTAREA>
</form>
</body>
</html>


Schau mal ob es funktioniert. Ich kann es nicht prüfen, da ich auf Arbeit bin und externe Zugriffe nicht gewünscht sind (d.h. Dein Code geht hier nicht).
von topse611
Hallo erstmal,

folgendes Problem:
Ich soll eine Seite erstellen, ähnlich der Übersetzungsseite von Google.
Hierzu will ich das Google Translate API nutzen. Ich habe folgende Vorlage:

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>T-Systems Secure Translation</title>
<script language="javascript" src="http://www.google.com/jsapi"></script>
<script language="javascript">
 google.load ("language", "1");
 function gtrans (f) {
  document.getElementById("translation").innerHTML = "-";
  var lang = f.langpair.value.split("|");
  google.language.translate (f.translate.value, lang[0], lang[1], function (result) {
   if (!result.error) {
    var container = document.getElementById("translation").innerHTML = result.translation;
   }
   document.write result
  });
  return false;
 }
</script>
</head>

<body>
<form onsubmit="return false">
 <p>Enter text to translate and click "Translate"</p>
 <textarea name="translate" cols="50" rows="5"></TEXTAREA>
 <br />
 <select name="langpair">
  <option value="en|fr">English -> French</option>
  <option value="en|de">English -> German</option>
  <option value="fr|en">French -> English</option>
  <option value="fr|de">French -> German</option>
  <option value="de|en">German -> English</option>
  <option value="de|fr">German -> French</option>
 </select>
 <input type="button" value="Translate" onclick="gtrans(this.form)" />
 <p id="translation" style="border:1px solid #00f;padding:5px;width:400px">-</p>
</form>
</body>
</html>


Das Funktioniert auch soweit. Nun will ich aber mit dem übersetzten Text weiterarbeit. (z.B. per Email versenden, in einer Datenbank ablegen, etc). Ich kann aber leider nur PHP. Das Google Script ist halt aber leider in JS, dessen ich keinen Meter weit mächtig bin.

Was mir helfen würde, wäre wenn es möglich wäre irgendwie den übersetzten Text (der ja in dem vorhandenen Script in einen <p>-Tag geschrieben wird) in eine php Variable zu bringen.
Ist sowas irgendwie möglich? Wenn ja: wie?

Was mir unter Umständen auch vielleicht schon helfen würde, wäre wenn es möglich ist den übersetzten Text irgendwie statt in den <p>-Tag in eine <textarea> zu schreiben. Nur da ich das JS, das hier vorliegt, nicht verstehen kann und auch keinerlei JS Befehle kenne, kann ich mir hier selbst nicht weiterhelfen.

Ich bin hier total aufgeschmissen : /
Würde mich riesig freuen, wenn mir jemand weiterhelfen könnte.

Danke schonmal.
Gruß
Topse

Nach oben