如果src更改为另一个本地页面,则google translate元素不会翻译iframe

时间:2017-01-08 10:36:13

标签: javascript google-translate

Google翻译元素只会在第一次加载时在我的网页上翻译iframe。如果我在iframe中加载了另一个页面,则在大多数浏览器(例如Chrome)中都不会翻译该页面。我无法使用Google Translate iframe workaround,因为生成的网页无法在iframe中显示(似乎谷歌使用了帧杀手)。

这是我的代码:

<div id="google">
    <span id="google_translate_element"></span> <span style="float: left;">
        <script id="translate1">
            function googleTranslateElementInit() {
                googleTranslate = new google.translate.TranslateElement({
                    pageLanguage : 'de'
                }, 'google_translate_element');
            }
        </script> 
        <script id="translate2"
            src="http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit">
        </script>
    </span>
</div>

1 个答案:

答案 0 :(得分:0)

由于Google翻译发送的响应中有X-Frame-Options: DENY标题,因此翻译后的页面无法显示在iframe中。

我的解决方案是在您的服务器上实现路由以获取已翻译的页面,然后使用iframe

<iframe src="/translate?url=targetUrl"></iframe>

你可以绕过X-Frame-Options:DENY标题,在你的服务器上实现一个路径以获取内容并将其转发给用户,就像这样(在Python中,使用Flask):

def get_translate_url(url):
    return "http://translate.google.com/translate?hl=bg&ie=UTF-8&u=%s&sl=de&tl=en" % url

@app.route('/translate')
def grabContentForMyIframe():
    url = request.args.get(url)
    response = requests.get(get_translate_url(url))
    return response.content