Dynamischer Link / Übersetzer HILFE!
Olf
- javascript
- links
- url
Hilfe, ich habe folgendes Problem: Wie kann ich einen Link auf einer Seite xxx.de/yyy.HTML darstellen, der dynamisch die jeweilige Seite als Variable mitausspielt?
Konkret: ich würde gerne Googles Übersetzer als Option, sprich Als Button anbieten.
Also musste https:// www.hs.fi/urheilu/art-2000008662657.html
Hier dynamisch rein:
https ://www-hs-fi.translate.goog/urheilu/art-2000008662657.html?_x_tr_sl=auto&_x_tr_tl=de&_x_tr_hl=de&_x_tr_pto=wapp
Geht das ohne ein js Script? Und wie würdet ihr das notfalls mit Script lösen? Ich hab mir die Zähnchen ausgebissen...
Vielen Dank, Olf
Hallo Olf,
ich denke nicht, dass Du die URL ohne JavaScript zusammenbekommst, solange Du eine HTML Seite auslieferst. Wenn Du die Seite mit PHP oder ähnlichem generieren würdest, ok, dann wären da Möglichkeiten...
Wenn ich das richtig sehe, müssen im Hostname der Seite Minuszeichen durch 2 Minuszeichen ersetzt werden und dann Punkte durch Minuszeichen. Dahinter setzt man ".translate.goog".
Den Path- und Query-Anteil der URL hängt man dann als path an den so gebildeten Hostnamen, und dahinter als Zusatzparameter die Translate-Parameter. Nette Spielerei.
Du müsstest also
Zum Generieren der URL kannst Du auf den aktuellen Wert von window.location zugreifen. Das ist ein Location-Objekt, darin findest Du die Eigenschaften hostname, path und search, mit denen kannst Du Dir die translate.goog URL zusammensetzen. Den Hostnamen konvertierst Du mit 2 replaceAll aufrufen:
hostname.replaceAll("-", "--").replaceAll(".", "-")
Die Replaces müssen genau in dieser Reihenfolge sein, sonst ersetzt Du Punkte am Ende durch 2 Minuszeichen.
Was Du auf jeden Fall auch tun sollstest, ist prüfen, ob Du bereits auf einer .goog Seite bist, denn sonst würdest Du auch auf der übersetzten Seite die Übersetzung anbieten. Brrr.
Fallstricke:
Chrome-Desktop User benötigen Deinen Button übrigens nicht, da gibt's auf der rechten Maustaste "Auf Deutsch übersetzen" als Funktion.
Rolf
@@Rolf B
Du müsstest also
- genug JavaScript können um die Logik zusammenzubekommen
- den translate-button anbieten
- einen click-Handler darauf registrieren
- im click-Handler die URL generieren
- window.location auf die generierte URL setzen.
🖖 Живи довго і процвітай
Hallo Gunnar,
die Datenschutzerklärung erweitern
Es wäre wohl sinnvoll, aber wenn man ganz penibel ist, dann muss man doch fragen: Warum? Es ist doch nicht seine Seite, die da angezeigt wird. Er verlinkt woandershin.
Zwingt die DSGVO, eine Datenschutzerklärung für Fremdseiten abzugeben, zu denen man verlinkt?
Von dem Link kann er sich ja distanzieren…
Rolf
Hallo Olf,
ich verende für den Button zum Google-Übersetzer den folgenden Code:
<div id="google_translate_element"><button type="button">Translate by Google</button></div>
<script>
function googleTranslateElementInit() {
new google.translate.TranslateElement({
pageLanguage: 'de'
}, 'google_translate_element');
}
document.querySelector("#google_translate_element > button").onclick = function() {
this.parentNode.removeChild(this);
var scr = document.createElement("script");
scr.src = "https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit";
document.body.appendChild(scr);
}
</script>
Erst bei Klick auf den Button wird das Übersetzerscript von Google geladen und die Sprachwahl angeboten.
Gruß
Jürgen
Hallo JürgenB,
ich verende
mein Beileid.
Rolf
VIELEN DANK für die schnelle Hilfe. Ohne Script geht's nicht, ich sehe es ein.
@ Rolf B Perfekte Hilfe. Ich sitz dran, funktioniert fast. Vielen Dank für die Hinweise zu den verschiedenen Ländervarianten. Ich teste....
@ JürgenB Danke, löst das Problem im Kern. Wäre da nicht Google. Aus irgendwelchen Gründen zerlegt die Variante die Übersetzung. Nur gefühlt die Hälfte eines Textes/Seite wird übersetzt. Den Fehler habe ich nicht gefunden. Gefühlt ist es eine andere Übersetzungsmechanik, als die Variante, die ich gewählt habe - meine ist die Übersetzung einer Webseite.
Zudem muss ich den Button als Schaltfläche für mehrere Sprachen und nicht als Auswahl darstellen.
Es geht also weiter...