tag:forum.selfhtml.org,2005:/self Dynamischer Link / Übersetzer HILFE! – SELFHTML-Forum 2022-03-07T19:15:46Z https://forum.selfhtml.org/self/2022/mar/05/dynamischer-link-ubersetzer-hilfe/1796982?srt=yes#m1796982 Olf 2022-03-05T22:47:05Z 2022-03-05T22:47:05Z Dynamischer Link / Übersetzer HILFE! <p><strong>Hilfe</strong>, 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?</p> <p>Konkret: ich würde gerne <strong>Googles Übersetzer als Option</strong>, sprich Als Button anbieten.</p> <p>Also musste https:// www.hs.fi/urheilu/art-2000008662657.html</p> <p>Hier dynamisch rein:</p> <p>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</p> <p>Geht das ohne ein js Script? Und wie würdet ihr das notfalls mit Script lösen? Ich hab mir die Zähnchen ausgebissen...</p> <p>Vielen Dank, Olf</p> https://forum.selfhtml.org/self/2022/mar/05/dynamischer-link-ubersetzer-hilfe/1796983?srt=yes#m1796983 Rolf B 2022-03-05T23:38:16Z 2022-03-05T23:38:16Z Dynamischer Link / Übersetzer HILFE! <p>Hallo Olf,</p> <p>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...</p> <p>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".</p> <p>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.</p> <p>Du müsstest also</p> <ul> <li>genug JavaScript können um die Logik zusammenzubekommen</li> <li>den translate-button anbieten</li> <li>einen click-Handler darauf registrieren</li> <li>im click-Handler die URL generieren</li> <li>window.location auf die generierte URL setzen.</li> </ul> <p>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:</p> <p><code>hostname.replaceAll("-", "--").replaceAll(".", "-")</code></p> <p>Die Replaces müssen genau in dieser Reihenfolge sein, sonst ersetzt Du Punkte am Ende durch 2 Minuszeichen.</p> <p>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.</p> <p>Fallstricke:</p> <ul> <li>Google könnte die Parametrierung der Webseitenübersetzung ändern, dann musst Du erneut reverse engineering betreiben</li> <li>Die Mechanismen, die Google anbietet, können von Land zu Land verschieden sein</li> </ul> <p>Chrome-Desktop User benötigen Deinen Button übrigens nicht, da gibt's auf der rechten Maustaste "Auf Deutsch übersetzen" als Funktion.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2022/mar/05/dynamischer-link-ubersetzer-hilfe/1796986?srt=yes#m1796986 JürgenB https://www.j-berkemeier.de 2022-03-06T06:18:29Z 2022-03-06T06:18:29Z Dynamischer Link / Übersetzer HILFE! <p>Hallo Olf,</p> <p>ich verende für den Button zum Google-Übersetzer den folgenden Code:</p> <pre><code class="block language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>google_translate_element<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>button</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>button<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Translate by Google<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>button</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span><span class="token punctuation">></span></span><span class="token script"><span class="token language-javascript"> <span class="token keyword">function</span> <span class="token function">googleTranslateElementInit</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">new</span> <span class="token class-name">google<span class="token punctuation">.</span>translate<span class="token punctuation">.</span>TranslateElement</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token literal-property property">pageLanguage</span><span class="token operator">:</span> <span class="token string">'de'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token string">'google_translate_element'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> document<span class="token punctuation">.</span><span class="token function">querySelector</span><span class="token punctuation">(</span><span class="token string">"#google_translate_element > button"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function-variable function">onclick</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span><span class="token punctuation">.</span>parentNode<span class="token punctuation">.</span><span class="token function">removeChild</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> scr <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">createElement</span><span class="token punctuation">(</span><span class="token string">"script"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> scr<span class="token punctuation">.</span>src <span class="token operator">=</span> <span class="token string">"https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"</span><span class="token punctuation">;</span> document<span class="token punctuation">.</span>body<span class="token punctuation">.</span><span class="token function">appendChild</span><span class="token punctuation">(</span>scr<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span> </code></pre> <p>Erst bei Klick auf den Button wird das Übersetzerscript von Google geladen und die Sprachwahl angeboten.</p> <p>Gruß<br> Jürgen</p> https://forum.selfhtml.org/self/2022/mar/05/dynamischer-link-ubersetzer-hilfe/1796985?srt=yes#m1796985 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2022-03-06T05:52:54Z 2022-03-06T05:53:12Z Dynamischer Link / Übersetzer HILFE! <p>@@Rolf B</p> <blockquote> <p>Du müsstest also</p> <ul> <li>genug JavaScript können um die Logik zusammenzubekommen</li> <li>den translate-button anbieten</li> <li>einen click-Handler darauf registrieren</li> <li>im click-Handler die URL generieren</li> <li>window.location auf die generierte URL setzen.</li> </ul> </blockquote> <ul> <li>die Datenschutzerklärung erweitern unnd angeben, dass Daten zu Google gesendet werden und dort für alle denkbaren und undenkbaren Zwecke missbraucht werden.</li> </ul> <p lang="uk"> Живи довго і процвітай</p> <div class="signature">-- <br> <em lang="en">When the power of love overcomes the love of power the world will know peace.</em><br> — Jimi Hendrix </div> https://forum.selfhtml.org/self/2022/mar/05/dynamischer-link-ubersetzer-hilfe/1797010?srt=yes#m1797010 Rolf B 2022-03-06T16:07:45Z 2022-03-06T16:07:45Z Dynamischer Link / Übersetzer HILFE! <p>Hallo Gunnar,</p> <blockquote> <p>die Datenschutzerklärung erweitern</p> </blockquote> <p>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.</p> <p>Zwingt die DSGVO, eine Datenschutzerklärung für Fremdseiten abzugeben, zu denen man verlinkt?</p> <p>Von dem Link kann er sich ja distanzieren…</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2022/mar/05/dynamischer-link-ubersetzer-hilfe/1797009?srt=yes#m1797009 Rolf B 2022-03-06T16:04:51Z 2022-03-06T16:04:51Z Dynamischer Link / Übersetzer HILFE! <p>Hallo JürgenB,</p> <blockquote> <p>ich verende</p> </blockquote> <p>mein Beileid.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2022/mar/05/dynamischer-link-ubersetzer-hilfe/1797093?srt=yes#m1797093 Olf 2022-03-07T19:15:46Z 2022-03-07T19:15:46Z Dynamischer Link / Übersetzer HILFE! <p>VIELEN DANK für die schnelle Hilfe. Ohne Script geht's nicht, ich sehe es ein.</p> <p>@ Rolf B Perfekte Hilfe. Ich sitz dran, funktioniert fast. Vielen Dank für die Hinweise zu den verschiedenen Ländervarianten. Ich teste....</p> <p>@ 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.</p> <p>Zudem muss ich den Button als Schaltfläche für mehrere Sprachen und nicht als Auswahl darstellen.</p> <p>Es geht also weiter...</p>