Olf: Dynamischer Link / Übersetzer HILFE!

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

  1. 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

    • 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.

    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:

    • Google könnte die Parametrierung der Webseitenübersetzung ändern, dann musst Du erneut reverse engineering betreiben
    • Die Mechanismen, die Google anbietet, können von Land zu Land verschieden sein

    Chrome-Desktop User benötigen Deinen Button übrigens nicht, da gibt's auf der rechten Maustaste "Auf Deutsch übersetzen" als Funktion.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. @@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.
      • die Datenschutzerklärung erweitern unnd angeben, dass Daten zu Google gesendet werden und dort für alle denkbaren und undenkbaren Zwecke missbraucht werden.

      🖖 Живи довго і процвітай

      --
      When the power of love overcomes the love of power the world will know peace.
      — Jimi Hendrix
      1. 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

        --
        sumpsi - posui - obstruxi
  2. 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

    1. Hallo JürgenB,

      ich verende

      mein Beileid.

      Rolf

      --
      sumpsi - posui - obstruxi
      1. 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...